7.1* Cara memilih pemungut sampah yang betul
Jika aplikasi anda tidak mempunyai keperluan kependaman yang ketat, anda hanya perlu menjalankan aplikasi dan biarkan JVM sendiri memilih pengumpul yang betul.
Dalam kebanyakan kes, tetapan lalai berfungsi dengan baik. Jika perlu, anda boleh melaraskan saiz timbunan untuk meningkatkan prestasi. Jika prestasi masih tidak seperti yang diharapkan, cuba ubah suai pengumpul untuk memenuhi keperluan aplikasi anda.
- Berurutan . Jika aplikasi mempunyai set data kecil (sehingga kira-kira 100 MB) dan/atau ia akan berjalan pada satu pemproses tanpa sebarang keperluan kependaman.
- selari . Jika keutamaan adalah prestasi puncak aplikasi dan tiada keperluan kependaman (atau jeda satu saat atau lebih boleh diterima).
- CMS/G1 . Jika masa tindak balas adalah lebih penting daripada daya pemprosesan keseluruhan, dan jeda kutipan sampah hendaklah lebih pendek daripada satu saat.
- ZGC . Jika masa tindak balas adalah keutamaan tinggi dan/atau timbunan yang sangat besar terlibat.
7.2* Syor untuk kutipan sampah
Elakkan pencetus manual
Sebagai tambahan kepada mekanisme asas pengumpulan sampah, salah satu perkara yang paling penting tentang proses ini di Jawa ialah ia tidak menentukan. Iaitu, adalah mustahil untuk meramalkan bila tepat pada masa larian ia akan berlaku.
Menggunakan kaedah System.gc() atau Runtime.gc(), anda boleh memasukkan pembayang dalam kod anda untuk memulakan pengumpul sampah, tetapi ini tidak menjamin bahawa ia benar-benar akan dijalankan.
Gunakan alat analisis
Jika anda tidak mempunyai memori yang mencukupi untuk menjalankan aplikasi anda, anda akan mengalami kelembapan, masa pengumpulan sampah yang lama, peristiwa "hentian dunia" dan akhirnya ralat kehabisan ingatan. Ini mungkin menunjukkan bahawa timbunan terlalu kecil, tetapi ia juga mungkin menunjukkan bahawa aplikasi mempunyai kebocoran memori.
Anda boleh menggunakan alat pemantauan seperti jstat atau Perakam Penerbangan Java untuk melihat sama ada penggunaan timbunan berkembang tanpa had, yang boleh menunjukkan pepijat dalam kod.
Lebih suka tetapan lalai
Jika anda mempunyai aplikasi Java yang kecil dan berdiri sendiri, anda mungkin tidak perlu menyediakan kutipan sampah. Tetapan lalai akan berfungsi dengan baik.
Gunakan bendera JVM untuk menyesuaikan
Pendekatan terbaik untuk menyediakan kutipan sampah di Java ialah menetapkan bendera JVM. Bendera boleh digunakan untuk menetapkan pengumpul sampah (contohnya, Bersiri, G1, dan seterusnya), saiz awal dan maksimum timbunan, saiz sekatan timbunan (contohnya, Generasi Muda, Generasi Lama), dan banyak lagi. lebih.
Pilih paip yang betul
Garis panduan yang baik dari segi tetapan awal ialah sifat aplikasi tersuai. Sebagai contoh, pemungut sampah serentak adalah cekap, tetapi sering menimbulkan peristiwa "perhentian dunia", menjadikannya lebih sesuai untuk pemprosesan dalaman di mana jeda panjang boleh diterima.
Pada masa yang sama, pengumpul sampah CMS direka bentuk untuk meminimumkan kependaman, yang menjadikannya sesuai untuk aplikasi web yang responsif adalah penting.
GO TO FULL VERSION