這篇文章給大家介紹java中內(nèi)部類出現(xiàn)內(nèi)存泄漏的原因是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司,提供成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
Java是一門面向?qū)ο缶幊陶Z言,可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序。
1、原因分析
(1)匿名內(nèi)部類沒有被引用的話,匿名內(nèi)部類的對象用完的話就有回收的機會。
(2)如果內(nèi)部類別只是在外部類別中引用,當(dāng)外部類別不再引用時,外部類別和內(nèi)部類別可以通過GC回收。
(3)內(nèi)部類引用被外部類以外的其他類引用時,內(nèi)部類和外部類不能被GC回收,即使外部類不被引用,內(nèi)部類也有指向外部類的引用)。
2、實例
public class ClassOuter { Object object = new Object() { public void finalize() { System.out.println("inner Free the occupied memory..."); } }; public void finalize() { System.out.println("Outer Free the occupied memory..."); } } public class TestInnerClass { public static void main(String[] args) { try { Test(); } catch (InterruptedException e) { e.printStackTrace(); } } private static void Test() throws InterruptedException { System.out.println("Start of program."); ClassOuter outer = new ClassOuter(); Object object = outer.object; outer = null; System.out.println("Execute GC"); System.gc(); Thread.sleep(3000); System.out.println("End of program."); } }
關(guān)于java中內(nèi)部類出現(xiàn)內(nèi)存泄漏的原因是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。