Rumah >Java >javaTutorial >Bagaimanakah mesin maya Java menggunakan pengiraan rujukan untuk pengurusan memori?
Mesin maya Java menggunakan pengiraan rujukan untuk mengurus penggunaan memori Apabila kiraan rujukan objek mencapai 0, JVM akan melakukan pengumpulan sampah. Mekanisme pengiraan rujukan termasuk: setiap objek mempunyai pembilang yang menyimpan bilangan rujukan yang menunjuk ke objek. Apabila objek dicipta, kaunter rujukan ditetapkan kepada 1. Apabila objek dirujuk, kaunter rujukan dinaikkan. Apabila rujukan tamat, kaunter rujukan dikurangkan.
Pengurusan Memori dengan Pengiraan Rujukan dalam Mesin Maya Java
Pengenalan
Java Virtual Machine (JVM) menggunakan pengiraan rujukan untuk mengesan penggunaan memori objek. Apabila kiraan rujukan objek mencapai 0, JVM akan mengumpul sampah itu.
Prinsip pengiraan rujukan
Setiap objek Java mempunyai kaunter rujukan 32-bit, yang menyimpan bilangan rujukan yang menunjuk ke objek. Apabila objek dicipta, kaunter rujukannya ditetapkan kepada 1. Apabila objek dirujuk, kaunter rujukannya ditambah. Apabila rujukan tamat, kaunter rujukan dikurangkan.
Kes praktikal
Contoh kod berikut menunjukkan cara mesin maya Java menggunakan pengiraan rujukan untuk pengurusan memori:
public class ReferenceCountingExample { public static void main(String[] args) { // 创建两个对象,并增加它们的引用计数 Object object1 = new Object(); Object object2 = new Object(); object1 = null; // 结束object1的引用 // JVM 会垃圾回收object1,因为它的引用计数为0 // 创建一个对object2的强引用 Object strongReference = object2; // 创建一个对object2的弱引用 WeakReference<Object> weakReference = new WeakReference<>(object2); // JVM 不会垃圾回收object2,因为还有强引用指向它 object2 = null; // 结束对object2的强引用 // 执行垃圾回收 System.gc(); // JVM 会垃圾回收object2,因为现在只有弱引用指向它 if (weakReference.get() == null) { System.out.println("object2 has been garbage collected"); } } }
Dalam kod ini:
object1
被垃圾回收,因为它没有更多的引用。object2
最初没有被垃圾回收,因为它有一个强引用指向它。object2
Apabila rujukan kuat ditamatkan, JVM menjalankan kutipan sampah dan object2
dikeluarkan kerana ia kini hanya mempunyai rujukan yang lemah.
Ia boleh mengesan objek tanpa rujukan dengan cepat.
Atas ialah kandungan terperinci Bagaimanakah mesin maya Java menggunakan pengiraan rujukan untuk pengurusan memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!