簡體   English   中英

恆定的靜態字段會導致Web應用程序中的內存泄漏嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM