17

アプリで多くの静的変数を使用しています。私の質問は、アプリを終了しても、それらはまだメモリ内にあるのでしょうか..? はいの場合、どうすればこれを修正できますか。前もって感謝します。

4

9 に答える 9

29

ClassLoader によってクラスがロードされると静的変数がロードされ、アンロードされると削除されます

于 2012-06-21T09:00:23.360 に答える
12

この質問の次の読者のために-

誰もが答えで言ったように、静的変数はクラス変数です。クラスが JVM からアンロードされなくなるまで、それらはメモリ内に残ります。

Android では、アプリケーションを閉じても完全に閉じないことがわかりました. 最近のアプリケーション スタックに残ります. ホーム ボタンを長押しすることで確認できます (ほとんどのデバイスで).

 Android itself kicked out those recent apps when the other app needs memory

Android では、次の場合に静的変数がアンロードされます。

 -You force stop your app.
 -Application crashes.
 -You clear your app data.
 -Switch off your Device.
 -Android kicked out recent app  
于 2013-08-27T17:18:27.167 に答える
8

静的変数は、クラスが JVM にロードされている限り存続します。JVM で実行されているクラスのインスタンスがなくなると、クラスはアンロードされ、静的変数はガベージ コレクションの対象になります。

于 2012-06-21T08:58:55.093 に答える
8

他の回答に加えて、それらの静的「変数」が実際に「静的最終」プリミティブ定数である場合、それらは実際には個別のエンティティとしてまったく存在しませんが、それらの値は使用するすべてのクラスに正しくコンパイルされることに注意してくださいそれら (それらを定義するものだけではありません)。

于 2012-06-21T08:59:00.590 に答える
4

静的変数はクラスに関連付けられており、クラスがメモリ内にある限り存続します (アプリケーションが終了すると存在しなくなります)。

于 2012-06-21T08:56:39.877 に答える
3

場合によっては、すべてのオブジェクトに共通の変数が必要になることがあります。これは、static modifier. Fields that have the static modifier in their declaration are called static fields or class variables. They are associated with the class, rather than with any object. Every instance of the class shares a class variable, which is in メモリ内の 1 つの固定位置。どのオブジェクトでもクラス変数の値を変更できますが、クラスのインスタンスを作成せずにクラス変数を操作することもできます。

インスタンスが使用されていない場合、ガベージ コレクターはインスタンスを破棄します。これは、インスタンスがメモリから消去されることを意味します。

于 2012-06-21T08:59:00.043 に答える
3

アプリで多くの静的変数を使用しています。

静的変数は自動メモリ管理の影響を受けないため、メソッド (Android)でそれらをnullに設定する必要があります。それらは確かにクラスに属しており、 @ Jigar JoshionDestroyが指摘したとおりに機能します。

于 2012-06-21T08:59:22.150 に答える
2

静的変数はクラス変数と呼ばれ、クラスがロードされたときにロードされ、クラスがアンロードされたときにアンロードされます。たとえば、次のようなクラス変数

private int classinVar;

クラスがロードされると、デフォルト値で自動的に初期化されます。同じ概念は、サインアウトを取得したときにサインアウトを使用すると、そのクラスは静的フィールドでコンテキストから外れます。

于 2012-06-21T09:55:33.360 に答える
2

C/C++ の場合で、ガベージを収集しなかった場合は、メモリ管理プログラムを使用する必要があります。java の場合は、メモリからすべての「javaw」プログラムを閉じ、jvm を閉じます。

于 2012-06-21T08:59:52.027 に答える