1

j2me 開発者です。現在、j2me を使用してモバイル アプリケーションを開発しています。と疑問に思ったのですが、

Java では、オブジェクトを作成すると、しばらくしてそれが望ましくないという意味で、それを null にすると、自動的にメモリが解放され、ガベージ コレクションに移動します。

String str1=new String("Thamilan");  //Allocating a memory for str1
  .......
  ......
str1=null;     //Frees the  memory of str1

上記のコードstr1=nullはメモリを解放します。私の疑問は、任意のオブジェクトを null に参照すると、j2me のガベージ コレクション (メモリの解放) が正しいかどうかということです。

私を助けてください。答えは私にとって非常に役に立ちます。モバイルアプリケーションでメモリの制約の問題があったためです。

ありがとうございます。それでは、お元気で

4

3 に答える 3

2

はい、オブジェクトへのすべての参照がなくなると、そのオブジェクトはガベージ コレクションの対象となり、そのオブジェクトのメモリは最終的に解放されます。これは通常、すぐには発生しませんが、後でバックグラウンド スレッドで、またはプログラムがメモリ不足になる恐れがある場合に発生します。これは J2ME にも当てはまります。

J2ME で注意する必要があるのは (一般的にはなおさらです)、割り当ての最後でメモリを保持することです。つまり、回避できる場合は、最初から大量のオブジェクトを作成しないでください。

PS:

String str1 = new String("Thamilan")

としてより適切に記述されます (そしてより多くのメモリを使用します)

String str1 = "Thamilan";
于 2011-08-05T06:43:59.550 に答える
0

System.gc();ガベージ コレクションを呼び出すほうがよい。

于 2011-08-17T16:40:59.640 に答える