Java Garbage CollectorPetua untuk penggunaan The Garbage Collector (GC) ialah bahagian penting dalam teknologi mesin maya perisian moden impak sangat besar. Kedua-dua Mesin Maya Java (JVM) dan rangka kerja .net menyediakan fungsi ini. Di bawah ini kami memperkenalkan secara ringkas prinsip pemungut sampah dalam mesin maya Java.
Pengurusan memori Java sebenarnya adalah pengurusan objek, termasuk peruntukan dan pelepasan objek.
Untuk pengaturcara, gunakan kata kunci baharu untuk memperuntukkan objek apabila melepaskan objek, hanya tetapkan semua rujukan kepada objek kepada null. Untuk GC, apabila pengaturcara mencipta objek, GC mula memantau alamat, saiz dan penggunaan objek. Biasanya, GC menggunakan graf terarah untuk merekod dan mengurus semua objek dalam timbunan. Dengan cara ini, ia ditentukan objek yang "boleh dicapai" dan objek yang "tidak boleh dicapai". Apabila GC menentukan bahawa sesetengah objek "tidak boleh dicapai", GC bertanggungjawab untuk menuntut semula ruang memori ini.
GC biasanya dilaksanakan oleh satu atau sekumpulan proses dalam JVM Ia sendiri menduduki ruang timbunan yang sama dengan program pengguna dan juga menduduki CPU semasa berjalan. Semasa proses GC sedang berjalan, aplikasi berhenti berjalan.
Oleh itu, apabila masa berjalan GC panjang, pengguna boleh merasakan jeda program Java Sebaliknya, jika masa berjalan GC terlalu pendek, kadar pemulihan objek mungkin terlalu rendah. yang bermaksud masih banyak perkara yang sepatutnya Objek yang dikitar semula tidak dikitar semula dan masih menduduki banyak ingatan. Oleh itu, apabila mereka bentuk GC, pertukaran mesti dibuat antara masa jeda dan kadar pemulihan.
Mengikut prinsip kerja GC, kami boleh menggunakan beberapa teknik dan kaedah untuk menjadikan operasi GC lebih cekap dan lebih selaras dengan keperluan aplikasi.
Berikut ialah beberapa cadangan untuk pengaturcaraan.
1. Cadangan paling asas adalah untuk mengeluarkan rujukan kepada objek yang tidak berguna secepat mungkin.
Apabila kebanyakan pengaturcara menggunakan pembolehubah sementara, mereka membiarkan pembolehubah rujukan ditetapkan secara automatik kepada null selepas keluar dari skop aktif (skop).
2. Gunakan fungsi finalize sesedikit mungkin. Fungsi finalize menyediakan pengaturcara Java peluang untuk melepaskan objek atau sumber. Walau bagaimanapun, ia akan meningkatkan beban kerja GC, jadi gunakan muktamad sesedikit mungkin untuk memulihkan sumber.
3. Jika anda perlu menggunakan gambar yang kerap digunakan, anda boleh menggunakan jenis aplikasi lembut. Ia boleh menyimpan gambar dalam memori sebanyak mungkin untuk program memanggil tanpa menyebabkan OutOfMemory.
4 Beri perhatian kepada jenis data pengumpulan, termasuk tatasusunan, pepohon, graf, senarai terpaut dan struktur data lain Untuk objek sedemikian, kitar semula GC secara amnya kurang cekap. Jika program anda membenarkannya, tetapkan objek rujukan yang tidak digunakan kepada null seawal mungkin. Ini boleh mempercepatkan kerja GC. Oleh itu, melainkan jika perlu, struktur data yang digunakan dalam program harus semudah mungkin.
5 Apabila program mempunyai masa menunggu tertentu, pengaturcara boleh melaksanakan System.gc() secara manual untuk memberitahu GC untuk dijalankan, tetapi spesifikasi bahasa Java tidak menjamin bahawa GC akan dilaksanakan.
Pelaksanaan pemungut sampah dalam program JAVA adalah automatik dan tidak boleh dipaksa walaupun pengaturcara boleh menilai dengan jelas bahawa sekeping memori tidak berguna dan harus dikitar semula, pengaturcara tidak boleh memaksanya pengumpul menuntut semula blok ingatan.
Atas ialah kandungan terperinci Cara menggunakan pengumpul sampah di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!