退房代号一个存储器(Out Of Memory in Codename One)

2019-10-22 05:49发布

我的应用程序使用的侧面板的菜单导航,当我表现出新的形式或打开侧边栏面板,应用程序需要更多的内存。 可能的,它依赖于使用一些图像处理在侧栏(掩蔽图像圈)和大量的使用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();
    }
}

无效sideMenu.addMenu(表格形式); - 为附加工具栏菜单的静态函数来形成。

Answer 1:

上一页形式“应该” GC'd。 但是,如果你在前面的形式整体形成一个元素及其所有内容的引用将被保留。 这是因为每个组件都有一个参考其父一路攀升到父窗体。

您可以使用工具,如在NetBeans内存分析器,也是我们的性能分析器在NetBeans工具来跟踪内存使用情况。 图片遮罩是有点贵,但如果你使用一个内置到URLImage所有的内存开销GC'd所以它不应该是一个问题。



文章来源: Out Of Memory in Codename One