1、單例造成的記憶體洩漏。 ,由於單例的靜態特性使其生命週期與應用的生命週期相同較長,因此如果一個物件不再需要使用,單例物件如果有該物件的引用,則該物件不能正常回收,記憶體洩漏。
解決方法,單例的生命週期和應用一樣長,防止記憶體洩漏。
// 使用了单例模式 public class AppManager { private static AppManager instance; private Context context; private AppManager(Context context) { this.context = context; } public static AppManager getInstance(Context context) { if (instance != null) { instance = new AppManager(context); } return instance; } }
2、容器使用時的記憶體洩露,記憶體洩露指的是對vector操作完成之後,執行下面與vector無關的程式碼時,如果發生了GC操作,這一系列的object是沒法被回收的,而此處的記憶體外洩可能是短暫的,因為在整個method()方法執行完成後,那些物件還是可以被回收。
解決方法很簡單,手動賦值為null即可:
void method(){ Vector vector = new Vector(); for (int i = 1; i<100; i++) { Object object = new Object(); vector.add(object); object = null; } //...对v的操作 vector = null; //...与v无关的其他操作 }
以上是如何解決java記憶體洩漏的詳細內容。更多資訊請關注PHP中文網其他相關文章!