回答
想想這樣:
每個對象都有一個對它的類的引用。
每個類都有一個對其類加載器的引用。
每個類加載器都有一個參考它曾經加載過的每個類。
這可能是整個混亂的球變成垃圾。這是應用程序卸載/重新加載的基礎(在servlet容器中)。但是,如果甚至有一個對象仍然被引用,那麼類加載器及其所有類都不能被卸載,因此實現應用程序卸載並非易事。
謝謝。我不認爲你知道這是否與.NET語言相同。我來自Java背景,但現在我正在用.NET語言進行編程。 – w0051977
爲什麼不發佈.net問題。 – irreputable
這是一個公平點。我更喜歡Java開發。 – w0051977
靜態類總是可訪問的,因此永遠不會垃圾收集。
現在,如果您的靜態類具有非靜態類的字段和實例並且設置爲null,那麼將釋放內存,因爲該對象不再被引用。
例如
public static StaticClass
{
public static InstanceClass myInstanceClass;
}
如果設置myInstanceClass
爲null,那麼這將是垃圾收集。
我明白myInstanceClass是如何以及何時收集垃圾的。我不明白什麼時候StaticClass被垃圾收集。當然,它必須從內存中卸載? – w0051977
@ w0051977當你關閉程序時,它會是 –
@ w0051977嘗試將你的靜態類設置爲null –
-static
類可以只能在一流水平不包級別,我們可以說static inner classes
或Top level classes
。
- A static
類然後由類加載器加載。
-現在static
類將是到內存,直到裝載機已加載它仍在運行,除非它不是由裝載卸載。
- 1. 靜態變量的生命週期
- 2. BroadcastReceiver生命週期 - 靜態變量
- 3. Android靜態對象生命週期
- 4. 靜態生命期
- 5. Android:活動來自靜態類的生命週期偵聽器
- 6. 類型必須滿足靜態生命週期
- 7. Java - 匿名內部類生命週期
- 8. 類型的生命週期
- 9. WP中的靜態對象的生命週期
- 10. 靜態變量生命週期和應用程序池recylcing
- 11. 阻止創建靜態生命週期對象
- 12. Rust函數沒有靜態生命週期?
- 13. 線程引用需要靜態生命週期?
- 14. 公共靜態變量和Android活動生命週期管理
- 15. Android中的靜態變量生命週期
- 16. ASP.NET:應用程序生命週期,靜態變量
- 17. servlet生命週期
- 18. JUnit生命週期
- 19. popToViewController生命週期
- 20. JSF2.0生命週期
- 21. ScheduledExecutorService生命週期?
- 22. BroadcastReceiver生命週期
- 23. BroadcastReceiver生命週期
- 24. UIControl生命週期
- 25. PreferenceActivity生命週期
- 26. System.Timers.Timer生命週期
- 27. viewController生命週期
- 28. SPListItem生命週期
- 29. ASP.NET:HttpApplication生命週期
- 30. MarshalByRefObject生命週期
取決於「靜態類」的含義。所有頂級類的行爲都像靜態類... –