[英]Do not place Android context classes in static fields; this is a memory leak
[英]Do constant static fields cause memory leak in an web application?
我知道靜態字段會導致內存泄漏,因為它們不會被GC。
但是,當在容器(例如Tomcat)中部署了Web應用程序時,每個應用程序都有自己的ClassLoader,並且可以取消部署。
我的問題是,垃圾回收器是否要求將要卸載的類的靜態成員引用的對象?
最簡單的情況是單例(由引用自身的靜態變量實現),如果取消部署應用程序,是否將其GC化?
這可能會回答您的問題:
停止應用程序后,Tomcat(甚至在6.0.24之前)將使WebAppClassLoader加載的類的所有靜態類變量的值無效。 在某些情況下,它可以解決類加載器泄漏的問題(例如,由於自定義ThreadLocal類,請參見上文),但是即使我們仍有泄漏,也可以減少丟失的內存量
你可以在這里閱讀更多
干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.