我有这个简单的Java代码,它创建一个JFrame实例并显示它。此链接包含jconsole拍摄的内存消耗图的屏幕截图
让我担心的是,任务管理器中的java.exe显示内存使用量以每8-9秒4-5KB的速度持续增加。需要帮助
import javax.swing.*;
class MyGUI extends JFrame
{
public void makeGUI()
{
setLayout(null);
setSize(500, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
public class Launcher
{
public static void main(String []args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new MyGUI().makeGUI();
}
});
}
}
发布于 2012-10-03 22:56:35
这个概要文件看起来非常正常--程序创建对象,垃圾收集器通过清除不能再访问的对象来释放内存。
重要的是,所有的低谷点或多或少都在同一级别上,所以看起来您的代码不会有内存管理问题。
您可以通过将堆空间的最大值设置为较低的级别来减少峰值的高度,但5MB无论如何都不是很多……
发布于 2012-10-03 23:04:18
Java倾向于根据需要使用内存。它不会经常进行垃圾收集,所以它的大小自然会增加,即使是在运行时使用一个简单的程序。因为它必须为您甚至大多数情况下都不会看到的小事件创建类。
如果你想强制java进行垃圾收集并手动减少内存使用,你总是可以调用System.gc()
,但你应该非常谨慎地使用它。
https://stackoverflow.com/questions/12711106
复制相似问题