Rumah  >  Artikel  >  Java  >  Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampah

Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampah

WBOY
WBOYke hadapan
2022-07-14 16:52:391923semak imbas

Artikel ini membawa anda pengetahuan yang berkaitan tentang java Ia terutamanya menganjurkan isu-isu yang berkaitan dengan pemungut sampah JVM, termasuk Pengumpul Lama Bersiri dan Bersiri, Pengumpul ParNew, Kitar semula Lama Selari dan Selari dan kandungan lain, mari kita ambil lihat di bawah, saya harap ia akan membantu semua orang.

Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampah

Pembelajaran yang disyorkan: "tutorial video java"

Konkurensi dan selari

  • Sejajar ): Selari menerangkan hubungan antara berbilang benang pengumpul sampah, menunjukkan bahawa berbilang benang tersebut berfungsi bersama pada masa yang sama Biasanya, secara lalai, urutan pengguna berada dalam keadaan menunggu pada masa ini.
  • Serentak: Concurrency menerangkan hubungan antara benang pengumpul sampah dan benang pengguna, yang menunjukkan bahawa kedua-dua benang pengumpul sampah dan benang pengguna berjalan pada masa yang sama. Memandangkan utas pengguna tidak dibekukan, atur cara masih boleh bertindak balas kepada permintaan perkhidmatan, tetapi kerana utas pemungut sampah menduduki sebahagian daripada sumber sistem, pemprosesan pemprosesan aplikasi akan terjejas pada tahap tertentu pada masa ini.

Klasifikasi pemungut sampah

1 Mengikut bilangan utas
Mengikut bilangan utas (digunakan untuk pengumpulan sampah) ia boleh. dibahagikan kepada Pengumpul sampah bersiri dan Pengumpul sampah selari.

  • Pengumpul sampah bersiri: Hanya satu CPU dibenarkan melakukan operasi kutipan sampah pada masa yang sama Pada masa ini, benang kerja digantung sehingga kerja kutipan sampah selesai.
  • Pengumpul sampah selari: berbilang CPU boleh digunakan untuk melaksanakan kutipan sampah secara serentak.
    Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampah
    2. Mengikut mod kerja,
    boleh dibahagikan kepada pengumpul sampah serentak dan kutipan sampah eksklusif mengikut kerja. mod. Peranti .
  • Pengumpul sampah serentak: Hanya satu CPU dibenarkan melakukan operasi kutipan sampah pada masa yang sama Pada masa ini, benang kerja digantung sehingga kerja kutipan sampah selesai.
  • Pengumpul sampah eksklusif: berbilang CPU boleh digunakan untuk melaksanakan kutipan sampah secara serentak.

Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampah
3. Mengikut kaedah pemprosesan pemecahan,
boleh dibahagikan kepada pengumpul sampah pemampat dan Pengumpul sampah tidak padat.

Pengumpul sampah yang memampatkan akan memampatkan dan menyusun objek yang masih hidup selepas kitar semula selesai untuk menghapuskan serpihan selepas kitar semula.

7 pengumpul sampah klasik

  • Pengumpul bersiri: siri, bersiri lama
  • Pengumpul Semula selari: ParNew, Penyerap selari, Sejajar lama
  • Pengitar semula serentak: CMS, G1

Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampah

Pengumpul generasi baharu: bersiri, ParNew, Parallel scavenge;
  • Pengumpul generasi lama: Serial lama, Parallel old, CMS;
  • Pengumpul timbunan penuh: G1;
  • Pengumpul sampah

Pengumpul Lama Bersiri dan Bersiri

Pengumpul bersiri Pengumpul adalah pengumpul paling asas dan tertua sekali (sebelum JDK 1.3.1) satu-satunya pilihan untuk pengumpul generasi baharu mesin maya HotSpot. Pengumpul Bersiri ialah pengumpul

satu-benang

Apabila ia melakukan kutipan sampah, semua benang kerja lain mesti digantung sehingga ia melengkapkan pengumpulan. Serial Old ialah versi generasi lama pengumpul Siri.

Pengumpul siri menggunakan
    algoritma salin, kitar semula bersiri dan mekanisme "Stop The World"
  • untuk melaksanakan kutipan sampah. Teg Pengumpul Lama Bersiri
  • —algoritma mampatan, pengumpulan bersiri dan mekanisme "Stop The World"
  • melaksanakan kutipan sampah.

Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampahPengumpul ParNew

Pengumpul ParNew pada asasnya ialah versi selari berbilang benang bagi Pengumpul Bersiri, kecuali ia menggunakan berbilang benang untuk sampah pada masa yang sama sebagai tambahan kepada pengumpulan, selebihnya tingkah laku, termasuk semua parameter kawalan yang tersedia untuk pengumpul Bersiri, algoritma pengumpulan, Hentikan Dunia, peraturan peruntukan objek, strategi kitar semula, dll., adalah selaras sepenuhnya dengan pengumpul Bersiri. .


Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampahPengumpul Lama Selari dan Selari

Pengumpul Parallel Scavenge juga merupakan pengumpul generasi baharu. Ia juga merupakan pengumpul berdasarkan algoritma berbilang benang pengumpul yang mampu mengumpul selari.

Berbeza dengan pengumpul ParNew, matlamat pengumpul sampah selari adalah untuk mencapai

throughput
yang boleh dikawal. Ia juga dipanggil pengumpul sampah yang diutamakan.

Troughput: Nisbah masa pemproses menghabiskan menjalankan kod pengguna kepada jumlah masa pemproses yang digunakan.

Keupayaan yang tinggi boleh menggunakan sumber pemproses yang paling cekap dan menyelesaikan tugas pengkomputeran program secepat mungkin. Ia terutamanya sesuai untuk tugasan analisis yang beroperasi di latar belakang dan tidak memerlukan terlalu banyak interaksi.

Parallel Old ialah versi generasi lama parallel Scavenge collector, menyokong koleksi serentak berbilang benang dan dilaksanakan berdasarkan algoritma pengumpulan markah.

Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampah

Pengumpul CMS

Pengumpul CMS (Concurrent Mark Sweep) ialah pengumpul yang bertujuan untuk mendapatkan masa jeda kitar semula yang paling singkat.

Pengumpul CMS dilaksanakan berdasarkan algoritma mark-clear Operasinya boleh dibahagikan kepada empat langkah, termasuk:

  1. Tanda awal
    The. penandaan awal hanya menandakan objek yang GC Roots boleh kaitkan secara langsung, yang sangat pantas
  2. Pemarkahan Serentak
    Fasa penandaan serentak ialah proses melintasi keseluruhan graf objek bermula daripada objek yang dikaitkan secara langsung dengannya; GC Roots Ini Proses mengambil masa yang lama tetapi tidak perlu menjeda urutan pengguna, dan boleh berjalan serentak dengan utas pengumpulan sampah
  3. Penandaan semula
    Fasa penandaan semula adalah untuk membetulkan; masalah yang disebabkan oleh program pengguna yang terus beroperasi semasa tempoh penandaan serentak Tandakan rekod untuk bahagian objek yang telah berubah Masa jeda dalam fasa ini biasanya lebih lama sedikit daripada fasa penandaan awal, tetapi ia juga lebih pendek daripada fasa penandaan serentak;
  4. Pembersihan serentak
    Pembersihan dan padam Objek mati yang dinilai dalam fasa penandaan tidak perlu dialihkan, jadi fasa ini juga boleh serentak dengan utas pengguna.

Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampah
Pengumpul CMS tidak boleh mengendalikan "Sampah Terapung", dan ada kemungkinan "Kegagalan Mod Serentak" akan gagal dan membawa kepada satu lagi yang lengkap "Hentikan Dunia" Generasi GC penuh.
Semasa fasa penandaan serentak dan pembersihan serentak CMS, utas pengguna masih berjalan Sememangnya, objek sampah baharu akan terus dijana semasa program berjalan, tetapi bahagian objek sampah ini muncul selepas proses penandaan. selesai , CMS tidak boleh memprosesnya dalam koleksi semasa dan perlu menunggu kutipan sampah seterusnya untuk membersihkannya. Bahagian sampah ini dipanggil "sampah terapung".

Juga kerana benang pengguna perlu terus berjalan semasa fasa pengumpulan sampah, ruang memori yang mencukupi perlu dikhaskan untuk digunakan oleh benang pengguna Oleh itu, pengumpul CMS tidak boleh menunggu sehingga generasi lama hampir siap seperti pengumpul lain Apabila koleksi telah diisi sepenuhnya, beberapa ruang mesti dikhaskan untuk operasi program semasa pengumpulan serentak.

CMS ialah pengumpul berdasarkan algoritma "tanda-dan-jelas", yang bermaksud bahawa sejumlah besar serpihan ruang akan dijana pada penghujung koleksi, apabila terdapat terlalu banyak serpihan ruang akan menyebabkan masalah besar untuk peruntukan objek yang besar.

Mengapa tidak menggunakan algoritma pemampatan teg untuk mengelakkan pemecahan?

Oleh kerana apabila pembersihan serentak dilakukan, pemampatan tanda digunakan untuk menyusun memori, dan memori yang digunakan oleh urutan pengguna asal tidak boleh digunakan. Untuk memastikan urutan pengguna terus dilaksanakan, premisnya ialah sumber yang dijalankan tidak terjejas. Pemampatan bendera lebih sesuai digunakan dalam senario "Stop The World".

Pengumpul G1 (Sampah Didahulukan)

Sampah Pertama mempelopori idea reka bentuk pengumpul untuk koleksi tempatan dan bentuk susun atur memori berdasarkan Wilayah Ia terutamanya untuk pelayan sisi. Pengumpul sampah yang digunakan terutamanya ditujukan kepada mesin yang dilengkapi dengan CPU berbilang teras dan memori berkapasiti besar Ia boleh memenuhi masa jeda GC dengan kebarangkalian yang sangat tinggi dan juga mempunyai ciri prestasi pemprosesan yang tinggi.

Untuk semua pengumpul lain sebelum pengumpul G1, julat sasaran kutipan sampah adalah sama ada keseluruhan generasi baharu, keseluruhan generasi lama atau keseluruhan timbunan Java. G1 boleh membentuk set koleksi untuk mana-mana bahagian memori timbunan untuk dikitar semula Kriteria ukuran bukan lagi milik generasi mana, tetapi bahagian memori mana yang paling banyak menyimpan sampah dan mempunyai faedah kitar semula yang paling hebat.

Ciri-ciri pengumpul G1

1 Keselarian dan keselarasan

  • Selarian: G1 boleh mempunyai berbilang GC semasa kitar semula Benang berfungsi di masa yang sama, dan urutan pengguna Menghentikan Dunia pada masa ini.
  • Concurrency: G1 mempunyai keupayaan untuk melaksanakan secara berselang-seli dengan aplikasi yang boleh dilaksanakan pada masa yang sama dengan aplikasi, secara amnya, aplikasi tidak akan disekat sepenuhnya semasa keseluruhan kitar semula fasa.

2

  • G1 masih direka bentuk mengikut teori koleksi generasi, tetapi susun atur memori timbunannya sangat jelas berbeza daripada pengumpul lain: G1 tidak lagi mematuhi saiz tetap dan bilangan pembahagian kawasan generasi tetap, tetapi Ia membahagikan timbunan Java berterusan kepada berbilang wilayah bebas (Wilayah) dengan saiz yang sama Setiap Wilayah boleh memainkan peranan ruang Eden, ruang Survivor atau ruang generasi lama dalam generasi baharu mengikut keperluan. Pengumpul boleh menggunakan strategi yang berbeza untuk memproses Wilayah yang memainkan peranan yang berbeza, supaya kedua-dua objek yang baru dicipta dan objek lama yang telah bertahan untuk satu tempoh masa dan telah bertahan berbilang koleksi boleh mencapai hasil pengumpulan yang baik. Terdapat juga jenis wilayah
  • Humongous
  • khas di Wilayah, yang digunakan khas untuk menyimpan objek besar. G1 percaya bahawa selagi saiz objek melebihi separuh daripada kapasiti Wilayah, ia boleh ditentukan sebagai objek besar.

3 Penyepaduan ruang

  • G1 menggunakan rantau sebagai unit asas apabila mengitar semula memori dan menggunakan algoritma salinan antara kawasan, tetapi secara keseluruhannya boleh Anggap ia sebagai algoritma pemampatan markup.

4 Model masa jeda boleh diramal

  • Pengumpul G1 boleh mewujudkan model masa jeda boleh diramal, yang menganggap Wilayah sebagai satu yang terkecil. unit kitar semula, iaitu, ruang ingatan yang dikumpul setiap kali adalah gandaan penting bagi saiz Wilayah, supaya kutipan sampah serantau penuh di seluruh timbunan Java dapat dielakkan secara terancang.
  • Pengumpul G1 menjejaki "nilai" pengumpulan sampah di setiap Wilayah Nilai ialah jumlah ruang yang diperoleh melalui kitar semula dan nilai pengalaman masa yang diperlukan untuk kitar semula, dan kemudian. mengekalkannya di latar belakang. Senarai keutamaan, setiap kali berdasarkan masa jeda pengumpulan yang dibenarkan oleh tetapan pengguna, Wilayah dengan nilai pemulihan yang paling besar akan diproses terlebih dahulu.
  • Kaedah menggunakan Wilayah ini untuk membahagikan ruang memori dan kitar semula wilayah yang diutamakan memastikan bahawa pengumpul G1 memperoleh kecekapan pengumpulan tertinggi yang mungkin dalam masa yang terhad.
  • Model ramalan jeda dilaksanakan berdasarkan min pengecilan sebagai asas teori Semasa proses kutipan sampah, pengumpul G1 akan merekodkan masa kitar semula setiap Wilayah, bilangan kad kotor dalam set memori setiap Wilayah. , dsb. Kos setiap langkah boleh diukur dianalisis dan maklumat statistik seperti nilai purata, sisihan piawai dan tahap keyakinan diperoleh. Kemudian gunakan maklumat ini untuk meramalkan Wilayah mana yang akan membentuk kutipan kitar semula jika kitar semula bermula sekarang supaya hasil tertinggi boleh diperoleh tanpa melebihi masa jeda yang dijangkakan.

Bagaimana untuk menyelesaikan objek rujukan merentas Wilayah yang wujud di Wilayah?

Gunakan set memori untuk mengelak daripada mengimbas keseluruhan timbunan kerana GC Roots mengekalkan set memori mereka sendiri halaman kad. Set memori G1 pada asasnya ialah jadual cincang dari segi struktur storan Kunci ialah alamat permulaan bagi Wilayah lain, Nilai ialah set, dan elemen yang disimpan di dalamnya ialah nombor indeks jadual kad.

Proses operasi pengumpul G1

  • Penanda Awal (Petanda Awal): Hanya tandakan objek yang GC Roots boleh dikaitkan secara langsung dan ubah suai TAMS Nilai penuding membenarkan fasa seterusnya benang pengguna untuk memperuntukkan objek baharu dengan betul dalam Rantau yang tersedia apabila ia dijalankan serentak. Peringkat ini memerlukan jeda benang, tetapi ia mengambil masa yang sangat singkat dan diselesaikan secara serentak semasa GC Minor, jadi pengumpul G1 sebenarnya tidak mempunyai jeda tambahan pada peringkat ini.
  • Pemarkahan Serentak (Pemarkahan Serentak): Bermula dari GC Root, lakukan analisis kebolehcapaian pada objek dalam timbunan, imbas secara rekursif graf objek dalam keseluruhan timbunan dan cari objek untuk dikitar semula Peringkat mengambil masa yang lama, tetapi boleh dilaksanakan serentak dengan program pengguna. Selepas imbasan graf objek selesai, objek yang direkodkan oleh SATB yang mempunyai perubahan rujukan semasa konkurensi mesti diproses semula.
  • Pemarkahan Akhir (Pemarkahan Akhir): Buat jeda sebentar lagi untuk urutan pengguna untuk memproses beberapa rekod SATB terakhir yang tinggal selepas fasa serentak.
  • Penapisan dan Kitar Semula (Pengiraan Data Langsung dan Pemindahan): Bertanggungjawab untuk mengemas kini statistik Wilayah, menyusun nilai kitar semula dan kos setiap Wilayah, dan merumuskan kitar semula berdasarkan masa jeda yang dijangkakan oleh pengguna Menurut rancangan itu, anda boleh memilih mana-mana bilangan Wilayah secara bebas untuk membentuk koleksi kitar semula, kemudian menyalin objek yang masih hidup di rantau itu memutuskan untuk dikitar semula ke Wilayah kosong, dan kemudian membersihkan semua ruang seluruh Wilayah lama. Operasi di sini melibatkan pergerakan objek hidup, yang mesti menggantung benang pengguna dan dilengkapkan oleh berbilang benang pengumpul secara selari.

Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampah

Perbandingan 7 pemungut sampah klasik

Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampah

Kombinasi pengumpul sampah

Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampah

Pengumpul sampah berkependaman rendah

Pengumpul Shenandoah

Shenandoah juga menggunakan reka letak memori timbunan berasaskan Wilayah Ia juga mempunyai Wilayah Humongous untuk menyimpan objek besar, dan strategi kitar semula lalai ialah yang sama. Ia adalah Wilayah yang mempunyai nilai kitar semula yang paling besar dahulu... Tetapi dari segi pengurusan ingatan timbunan, ia mempunyai sekurang-kurangnya tiga perbezaan yang jelas daripada G1.

  • Fasa kitar semula G1 boleh diselaraskan dengan berbilang benang, tetapi ia tidak boleh serentak dengan urutan pengguna Shenandoah menyokong algoritma pengisihan serentak.
  • Koleksi generasi tidak digunakan secara lalai Dalam erti kata lain, tidak akan ada Rantau generasi baru yang berdedikasi atau Rantau generasi lama Ini tidak bermakna koleksi generasi tidak mempunyai nilai kepada Shenandoah. Ini lebih Disebabkan pertukaran kos keberkesanan, ia diletakkan pada keutamaan yang lebih rendah berdasarkan pertimbangan beban kerja.
  • Shenandoah meninggalkan set memori yang menggunakan banyak memori dan sumber pengkomputeran untuk dikekalkan dalam G1, dan sebaliknya menggunakan struktur data global yang dipanggil "matriks sambungan" untuk merekodkan hubungan rujukan merentas Wilayah, mengurangkan masa pemprosesan penunjuk generasi silang. Penggunaan penyelenggaraan set memori yang memakan masa juga mengurangkan kebarangkalian masalah perkongsian pseudo. Matriks sambungan boleh difahami secara ringkas sebagai jadual dua dimensi Jika terdapat objek dalam Wilayah N menunjuk ke Wilayah M, tanda akan diletakkan di baris N dan lajur M semasa kitar semula, jadual ini boleh digunakan untuk menentukan kawasan yang mempunyai sambungan silang.

Proses kerja pengumpul Shenandoah boleh dibahagikan secara kasar kepada sembilan peringkat berikut:

  1. Petanda awal : Seperti G1, tanda pertama dengan GC Untuk objek yang berkaitan secara langsung dengan Roots, peringkat ini masih "Stop The World", tetapi masa jeda tiada kaitan dengan saiz timbunan, hanya bilangan GC Roots.
  2. Penandaan Serentak: Seperti G1, lintasi graf objek dan tandai semua objek yang boleh dicapai Peringkat ini serentak dengan urutan pengguna Tempoh masa bergantung pada bilangan objek yang masih hidup timbunan. Nombor dan kerumitan struktur graf objek.
  3. Tanda akhir: Sama seperti G1, proses baki imbasan SATB dan kira kawasan dengan nilai kitar semula tertinggi pada peringkat ini, dan bentuk kawasan ini menjadi satu set koleksi kitar semula. Terdapat juga jeda pendek semasa fasa penandaan akhir.
  4. Pembersihan Serentak: Peringkat ini digunakan untuk membersihkan Kawasan yang tidak ada satu pun objek yang masih hidup ditemui di seluruh wilayah.
  5. Kitar semula serentak: Pada peringkat ini, Shenandoah akan menyalin objek yang masih hidup dalam koleksi ke kawasan lain yang tidak digunakan. Berapa lama fasa pengumpulan serentak mengambil masa untuk dijalankan bergantung pada saiz koleksi.
  6. Kemas kini rujukan awal: Selepas menyalin objek dalam fasa kitar semula serentak, semua rujukan kepada objek lama dalam timbunan perlu diperbetulkan ke alamat baharu selepas menyalin kemas kini rujukan. Fasa permulaan kemas kini rujukan sebenarnya tidak melakukan sebarang pemprosesan khusus Fasa ini hanya ditubuhkan untuk mewujudkan titik pertemuan benang untuk memastikan semua benang pengumpul dalam fasa kitar semula serentak telah menyelesaikan tugas memindahkan objek yang diberikan kepada mereka. Masa kemas kini rujukan awal adalah sangat singkat, mengakibatkan jeda yang sangat singkat.
  7. Kemas kini rujukan serentak: Operasi kemas kini rujukan sebenarnya bermula serentak dengan urutan pengguna Tempoh masa bergantung pada bilangan rujukan yang terlibat dalam memori. Kemas kini rujukan serentak adalah berbeza daripada penandaan serentak Ia tidak perlu lagi mencari di sepanjang graf objek Ia hanya perlu mencari secara linear untuk jenis rujukan dalam susunan alamat fizikal memori dan menukar nilai lama kepada nilai baharu.
  8. Kemas kini rujukan akhir: Selepas menyelesaikan kemas kini rujukan dalam timbunan, rujukan yang sedia ada dalam GC Roots juga mesti diperbetulkan. Peringkat ini ialah jeda terakhir Shenandoah, dan masa jeda hanya berkaitan dengan bilangan GC Roots.
  9. Pembersihan serentak: Selepas kitar semula dan pengemaskinian rujukan serentak, semua Wilayah dalam keseluruhan set kitar semula tidak mempunyai objek yang masih ada. Akhirnya, panggil semula Concurrency proses menuntut semula ruang ingatan Kawasan ini untuk peruntukan objek baharu pada masa hadapan.

Pengumpul ZGC

Matlamat ZGC dan Shenandoah adalah sangat serupa pengumpulan boleh dihadkan kepada kependaman rendah kurang daripada sepuluh milisaat.

Pengumpul ZGC adalah berdasarkan susun atur memori Wilayah, (sementara) tanpa penjanaan, dan menggunakan teknologi seperti penghalang baca, penunjuk dicelup dan pemetaan berbilang memori untuk mencapai penandaan serentak - Pengumpul sampah berdasarkan algoritma pengisihan dengan kependaman rendah sebagai matlamat utamanya.

ZGC juga menggunakan reka letak memori timbunan berasaskan Wilayah, tetapi tidak seperti mereka, Wilayah ZGC adalah dinamik - penciptaan dan pemusnahan dinamik, serta saiz kapasiti rantau dinamik.

Proses operasi ZGC boleh dibahagikan kepada empat peringkat:

  1. Pemarkahan Serentak(: Seperti G1 dan Shenandoah, penandaan serentak ialah peringkat melintasi graf objek untuk analisis kebolehcapaian. Ia juga melalui penandaan awal dan penandaan akhir yang serupa dengan G1 dan Shenandoah . Jeda pendek untuk menandakan (walaupun mereka tidak dipanggil ini dalam ZGC), dan apa yang dilakukan oleh fasa jeda ini adalah serupa pada sasaran Tidak seperti G1 dan Shenandoah, penandaan ZGC adalah pada penunjuk dan bukan pada objek akan mengemas kini bendera Bertanda 0 dan Bertanda 1 dalam penuding pencelupan
  2. Penyediaan semula serentak: Fasa ini memerlukan statistik berdasarkan syarat pertanyaan tertentu yang perlu dibersihkan semasa proses pengumpulan. dan Wilayah ini harus disusun ke dalam set pengagihan semula
  3. Pengagihan semula serentak: Pengagihan semula ialah peringkat teras dalam proses pelaksanaan ZGC, dan proses ini harus menumpukan pada pengagihan semula Objek yang masih hidup disalin ke Wilayah baharu dan jadual pemajuan dikekalkan untuk setiap Rantau dalam set pengagihan semula untuk merekodkan hubungan pemanduan daripada objek lama ke objek baharu
  4. Pemetaan semula serentak: Apa yang dilakukan oleh pemetaan semula adalah untuk. membetulkan semua rujukan dalam keseluruhan timbunan yang menunjuk ke objek lama dalam set pengagihan semula dengan bijak ZGC menggabungkan kerja yang perlu dilakukan dalam fasa pemetaan semula serentak ke dalam fasa penandaan serentak dalam kitaran pengumpulan sampah yang seterusnya. jadi penggabungan menjimatkan kos merentasi graf objek Setelah semua penunjuk dibetulkan, jadual pemajuan asal yang merekodkan hubungan antara objek lama dan baharu boleh dikeluarkan
  5. Pilih pengumpul sampah yang betul

Pertimbangkan. tiga soalan berikut:

Apakah fokus utama aplikasi

Jika ia adalah analisis data, Untuk tugasan pengkomputeran saintifik, matlamatnya adalah untuk mengira keputusan secepat mungkin? mungkin, jadi daya tampung adalah fokus utama;
  • Jika ia adalah aplikasi SLA, masa jeda secara langsung menjejaskan kualiti perkhidmatan, dan dalam kes yang teruk, ia mungkin menyebabkan tamat masa transaksi, kelewatan sedemikian Itulah tumpuan utama ;
  • Dan jika ia adalah aplikasi pelanggan atau aplikasi terbenam, penggunaan memori pengumpulan sampah tidak boleh diabaikan
  • Apakah infrastruktur untuk menjalankan aplikasi itu?

Spesifikasi perkakasan, seni bina sistem yang terlibat ialah x86-32/64, SPARC atau ARM/Aarch64

    Bilangan pemproses dan saiz memori yang diperuntukkan
  • Adalah sistem pengendalian yang dipilih?
  • Apakah nombor versi JDK? Adakah ia ZingJDK/Zulu, OracleJDK, dsb. ? Versi "Java Virtual Machine Specification" yang manakah sepadan dengan JDK ini?
  • Cara memilih pemungut sampah

Utamakan melaraskan saiz timbunan untuk membolehkan JVM menyesuaikan diri.

Jika ingatan kurang daripada 100M, gunakan pengumpul bersiri

Jika ia adalah program teras tunggal, berdiri sendiri, dan tiada keperluan masa jeda, gunakan pengumpul bersiri
  • Jika ia berbilang CPU, daya pemprosesan tinggi diperlukan, masa jeda dibenarkan melebihi 1 saat, pilih selari atau pilihan JVM
  • Jika ia berbilang CPU, mengejar masa jeda rendah, cepat respons diperlukan (contohnya, kelewatan tidak boleh melebihi 1 saat untuk aplikasi Internet), Menggunakan pengumpul serentak
  • Pembelajaran yang disyorkan: "
  • tutorial video java
  • "

Atas ialah kandungan terperinci Pengenalan terperinci kepada mesin maya Java: JVM pengumpul sampah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam