2016-08-05 5 views
1

私はフォームメモリを開放して、そのフォームを空にして、一方から他方へナビゲートしようとしました。CODENAMEONEフォームを解放するには、あるページを他のページにナビゲートするときに、そのコンポーネントをすべて含めますか?

しかし、nullはメモリの解ではありません。一方から他方にナビゲートしながらメモリが増加します。

例:私は1つの重いフォームを持っていて、それから軽いフォームに移動すると、重いフォームで占められていたメモリは、軽いフォームを表示する前に解放され、その後は軽いフォームのメモリを占有する必要があります。

これは私が使用したサンプルコードです。

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(); 
    } 


} 

メモリの問題を解決するために必要な変更は何ですか?

答えて

0

メモリが増えている場合は、何かを参照しているためです。階層内の1つのコンポーネントを参照するだけでフォーム全体がRAMに保持されるので、グローバルスコープに格納された1つのボタンでそのフォームをトリガーできます。

関連する問題