我的应用程序使用侧面板菜单作为导航,当我显示新表单或打开侧边栏面板时,该应用程序会占用越来越多的内存。可能,这取决于在 SideBar 中使用一些图像处理(将图像屏蔽为圆形)以及大量使用 URLImage 类来下载图像。但很可能是因为我没有释放以前表单的内存。
如何释放该内存?
更改表单代码:
public void showForm(FormBuilder form) {
if ( current == null ||
( ! form.getForm().getTitle().equals(current.getTitle()) )
) {
current = form.getForm();
if (!(form instanceof splash)) {
try {
sideMenu.addMenu(current);
} catch (IOException ex) {
}
}
current.show();
}
}
void sideMenu.addMenu(Form form); - 将侧栏菜单添加到表单的静态函数。
最佳答案
以前的表单“应该”被 GC 处理。但是,如果您引用了前一个表单中的一个元素,则整个表单及其所有内容将被保留。这是因为每个组件都有对其父组件的引用,一直到父表单。
您可以使用 NetBeans 内存分析器以及我们的 performance profiler 等工具。 NetBeans 中用于跟踪内存使用情况的工具。图像屏蔽有点昂贵,但如果您使用 URLImage
中内置的图像屏蔽,所有内存开销都会被 GC 处理,所以这应该不是问题。
关于memory - 代号一内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29013092/