這篇文章給大家介紹java中內部類出現內存泄漏的原因是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。
1、原因分析
(1)匿名內部類沒有被引用的話,匿名內部類的對象用完的話就有回收的機會。
(2)如果內部類別只是在外部類別中引用,當外部類別不再引用時,外部類別和內部類別可以通過GC回收。
(3)內部類引用被外部類以外的其他類引用時,內部類和外部類不能被GC回收,即使外部類不被引用,內部類也有指向外部類的引用)。
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."); } }
關于java中內部類出現內存泄漏的原因是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。