我的应用程序使用SidePanel菜单作为导航,当我显示新表单或打开侧边栏面板时,该应用程序需要越来越多的内存。可能,它依赖于在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(表单表单); - 用于添加SideBar菜单的静态函数。
答案 0 :(得分:1)
以前的表格“应该”是GC。但是,如果您对上一个表单中的一个元素有引用,则将保留整个表单及其所有内容。这是因为每个组件都有对其父级的引用,直到父表单。
您可以使用NetBeans内存分析器等工具以及NetBeans中的performance profiler工具来跟踪内存使用情况。图像屏蔽有点贵,但是如果你使用URLImage
中内置的那个,所有的内存开销都是GC的,所以它应该不是问题。