13919049954

Java 中,方法结束时,对象引用不赋 Null,会导致内存泄露么?

作者:金城在线 日期:2017/11/21 10:43:27 人气:314

当一个对象到GC Root没有任何引用连接相连。那么就证明这个对象是不可用的。这时这个对象就被判死缓了。想要真正的对这个对象判死刑,这个对象还至少经历两次判决。第一次是判断是否有必要对这个对象执行finalize()方法。如果这个当前对象没有覆盖finalize()方法或finalize()方法已经被调用过了,那么就不会调用finalize()方法,即对象成功的逃脱了一审判决。如果对象已经有必要执行finalize()方法,那么这个对象会被放入一个叫做F-Queue的队列中,这也就意味着在一审中这个对象已经被判死刑了。

在JVM中,会有一个叫做Finalizer的线程去触发finalize()方法。finalize()方法是对象逃脱死刑的最后一次机会,如果在finalize()的过程中成功的与GC Root相连,则对象成功的逃脱死刑。否则对象就会被第二次标记。被第二次标记的对象就会被送上刑场。如果没有免死金牌(与GC Root相连)的话,对象就会被枪决。所以即使你不对对象赋null,JVM也会帮你解决它。

请自行谷歌GC Root

如果想了解的更清楚,请看《深入Java虚拟机第二版》


            金城在线专注网站、软件、APP、微信公众平台、小程序、抖音、头条等开发推广,如果您有这方面的需求或者不同的观点,欢迎联系交流。

    官方微信

    本文网址:http://lz.net.cn/SEOyouhua/497.html
    读完这篇文章后,您心情如何?
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    更多>>网友评论
    发表评论