memory - 代号一内存不足

标签 memory memory-leaks out-of-memory codenameone

我的应用程序使用侧面板菜单作为导航,当我显示新表单或打开侧边栏面板时,该应用程序会占用越来越多的内存。可能,这取决于在 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/

相关文章:

c# - 进行 GZipStream 压缩时抛出 System.OutofMemoryException

Python - 如何获取内存地址的值?

java - Java 中的多态性、数据类型和内存

类型转换指针?

c - 当我再次 malloc 时,free(struct variable) 不会清除与该变量关联的先前存储的值?

ios - 消除使用 CGPathCreateCopyByTransforming 和 CGPathCreateCopy 导致的内存泄漏

android - 当 View 大于图像时,Fresco Debug Overlay 显示红色

c - 为什么我的c程序突然用了30g的虚拟内存?

ios - NSMutableArray addObject 在设备中崩溃但在模拟器中运行良好

.net - 集合内存不足