Rumah > Java > javaTutorial > Apakah punca kebocoran memori kelas dalam Java?

Apakah punca kebocoran memori kelas dalam Java?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-04-21 23:40:17
ke hadapan
1340 orang telah melayarinya

Analisis Sebab

1 Jika kelas dalaman tanpa nama tidak dirujuk, terdapat peluang untuk mengitar semula apabila objek kelas dalaman tanpa nama digunakan.

2. Jika kelas dalam hanya dirujuk dalam kelas luar, apabila kelas luar tidak lagi dirujuk, kelas luar dan kelas dalam boleh dikitar semula melalui GC.

Apabila rujukan kelas dalam dirujuk oleh kelas lain selain daripada kelas luar, kelas dalam dan kelas luar tidak boleh dikitar semula oleh GC Walaupun kelas luar tidak dirujuk, kelas dalam masih mempunyai a rujukan kepada kelas luar).

Contoh

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.");
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah punca kebocoran memori kelas dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Isu terkini
Bolehkah java digunakan sebagai bahagian belakang web?
daripada 1970-01-01 08:00:00
0
0
0
Pasang JAVA
daripada 1970-01-01 08:00:00
0
0
0
Tidak dapat memasang java
daripada 1970-01-01 08:00:00
0
0
0
Bagaimanakah php melaksanakan penyulitan sha1 java?
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan