这个简单的程序和内存(任务管理器的私有工作集)通过调整其框架来增长。如果我持续调整帧的大小,则32MB(最初)到140MB以上。为什么会发生这种情况,对于Java程序来说这是正常的吗?
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class TestSwing {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
});
}
}
我为SWT和JavaFX简单的一帧程序做了同样的事情。与Swing相比,内存增长非常缓慢但似乎稳步增长。
我也为notepad.exe的框架做了同样的事情,但内存没有增长。
我使用VisualVM来监视JVM堆,但堆大小没有改变。
所以问题可能是GUI库使用的本机内存。
[私人工作集:31MB(初始) - > 192MB(最后)]
环境:Windows Vista / Java 8更新66