0
A
回答
2
確保類不能被垃圾回收的方式是確保它保持可達。你可以:
- 是指它在另一個類,也可到達,
- 負載它在最初的類加載器(這將永遠是可達),
- 把類的實例到一個變量仍然可到達,
- 等等。
在實踐中,除非你的類使用您自己創建一個類加載器動態加載,這是不可能是類將被卸載/由GC破壞。
在另一方面......如果你真的關心一個單實例(不是類)收集被垃圾,正常執行Singleton設計模式的採用的是護理:
public class MySingleton {
private static Integer instance = new Integer(42);
public static Integer getInstance() {
return instance;
}
}
的static
變量是可到達的,只要該MySingleton
類保持可達...這通常是爲應用程序運行的壽命;往上看。
A public static
變量也可以工作,儘管從其他角度來看它是一個壞主意。
+0
感謝您的信息。 –
3
您可以使用一個enum單
class MySingleton implements MyInterface {
INSTANCE;
// methods
}
理想的情況下這樣的單身應該是無狀態的。有狀態的單身人士很難/很容易出現單元測試。
如果它不是無狀態的,我建議使用依賴注入來代替。即在應用程序加載時創建對象一次,並將其傳遞給所有需要它的實例。
相關問題
- 1. GC如何通過兩個線程收集類引用
- 2. Java GC未收集某個對象
- 3. Java GC CMS收集器時間
- 4. Java集合GC
- 5. 無法創建嵌套的收集數據類型
- 6. 一個類的內部字段不由GC通過幻像參考收集
- 7. GarbageCollection:可以收集類級別的成員變量或感染通過GC
- 8. 有沒有辦法通過編程創建java類類型?
- 9. 無法創建繼承類的集合
- 10. 無法創建收藏
- 11. Perfmon無法在Windows 7上創建數據收集器集x64
- 12. 無法通過Shopify API創建自定義產品集合
- 13. 無法通過Java
- 14. 無法通過Java
- 15. 無法通過Java
- 16. 無法通過Java
- 17. Java創建收集和出現次數
- 18. 收集通過流
- 19. 通過MXBean收集
- 20. 無法創建通過嚮導
- 21. 無法通過刀創建EC2實例
- 22. 無法通過dojo.NodeList.instantiate創建dijits
- 23. 無法創建並通過郵件
- 24. 無法通過文本'Button_Click'創建'System.Windows.RoutedEventHandler'
- 25. 無法通過動作創建對象
- 26. 無法通過swift創建PDF與UIView?
- 27. 無法通過API創建主題
- 28. 無法通過PHP創建ZIP
- 29. 創建solrcloud收集
- 30. 無聲收集創建停止請求
單身人士應該這樣做。 –