我尝试释放表单内存,只是为了在从一个表单导航到另一个表单时使该表单为空。
但是null并不是内存的解决方案。从一个导航到另一个时内存会增加。
例如:我有一个重型表单,我从该表单导航到轻型表单,然后应在显示轻型表单之前释放重型表单占用的内存,之后它应该仅占用轻型表单的内存。
这是我使用过的示例代码。
public class Form1 extends Form {
Form main;
public static void includeForm1(final Form form) {
Form1 form1 = new Form1();
form1.showForm1(form);
}
public void showForm1(Form form){
form = null;
this.main = new Form();
...
addComponent(BorderLayout.CENTER, mainContainer);
....
//Navigate to Form2
Form2.includeForm2(main);
...
this.show();
}
}
public class Form2 extends Form {
Form main;
public static void includeForm2(final Form form) {
Form2 form2 = new Form2();
form2.showForm2(form);
}
public void showForm2(Form form){
form = null;
this.main = new Form();
...
addComponent(BorderLayout.CENTER, mainContainer);
....
//Navigate to Form1
Form2.includeForm1(main);
...
this.show();
}
}
我需要执行什么更改来解决内存问题?
最佳答案
如果内存增加,那是因为您保留了对某些内容的引用。即使是对层次结构中一个组件的引用也会将整个表单保留在 RAM 中,因此只需存储在全局范围中的一个按钮就可以触发该表单。
关于java - 如何在将一个页面导航到另一页面时发布 CODENAMEONE 表单(包括其所有组件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38783287/