public class MyClass {
private static MyClass instance = null;
private MyActivity myActivity;
private Button button;
public static MyClass getInstance(){
if (instance == null){
instance = new MyClass();
}
return instance;
}
private MyClass(){};
public void initialize(MyActivity activity){
myActivity = activity;
}
public void releaseMemory(){
instance = null;
}
}
そして 私はそのmyActivity インスタンスが漏洩することはありません)releaseMemoryを(呼び出すことによって、メモリを解放することができます。このアプローチではメモリ割り当ての違い
public class MyClass {
private static final MyClass instance = new MyClass();
private MyActivity myActivity;
private Button button;
private MyClass(){};
public void initialize(MyActivity activity){
myActivity = activity;
}
public void releaseMemory(){
instance = null; //Can't make it null
//Can do for individual variables
myActivity = null;
button = null;
}
}
MyClassのインスタンスは、私はそれが ヌル代わりに私がnullとして個々の変数を作ることができることはできません最終的なものとして。
私の理解が正しいですか、またはメモリリークに関連するものが何もありませんか?
Javaには、メモリ管理を行うガベージコレクタがあります。明示的に 'null'への参照を割り当てる必要はありません。 –
@MickMnemonicこれらは静的インスタンスなので、クラスがアンロードされたときにのみガベージコレクションされます。Androidでアクティビティ変数をnullにしなかった場合、メモリリークを報告します。 – sankar
実行時に解放されずに何度も何度も割り当てられた場合、「メモリリーク」が発生します。あなたの場合、MyClassクラスは、JVMの実行が終了するまでインスタンス化されたままです。 – Heri