CodeGym /Kursus Jawa /3. modul /Ngumpulake sampah generasi

Ngumpulake sampah generasi

3. modul
tingkat , wulangan
kasedhiya

Nggarap Generasi Obyek

Pengumpul sampah Jawa ngleksanakake strategi pengumpulan sampah generasi sing bisa nggolongake obyek miturut umur.

Kebutuhan kasebut (kanggo menehi tandha lan kompak kabeh obyek) ing JVM bisa diarani ora efisien. Wiwit minangka akeh obyek sing dialokasikan, dhaptare saya tambah, sing ndadékaké paningkatan wektu pengumpulan sampah. Analisis empiris saka aplikasi wis nuduhake yen akeh obyek ing Jawa umure cendhak.

Area memori tumpukan ing JVM dipérang dadi telung bagean:

Nggarap Generasi Obyek

Generasi mudha

Obyek sing mentas digawe diwiwiti ing generasi enom. Generasi mudha dipérang manèh dadi rong kategori.

  • Eden Space - Kabeh obyek anyar miwiti kene, padha diparengake memori dhisikan.
  • Spasi Survivor (SakaSpace lan ToSpace) - Obyek dipindhah ing kene saka Eden sawise urip siji siklus pangumpulan sampah.

Proses nalika obyek minangka sampah sing diklumpukake saka generasi mudha diarani acara pengumpulan sampah cilik.

Nalika ruang Eden kebak obyek, koleksi sampah cilik ditindakake. Kabeh obyek mati dibusak, lan kabeh sing urip dipindhah menyang salah siji saka rong spasi isih. GC cilik uga mriksa obyek ing papan sing isih urip lan pindhah menyang papan liyane (sabanjure).

Ayo dadi conto ing urutan ngisor iki.

  1. Ana obyek saka loro jinis (urip lan mati) ing Eden.
  2. Ana GC cilik - kabeh obyek mati dibusak saka Eden. Kabeh obyek urip dipindhah menyang spasi-1 (FromSpace). Eden lan spasi-2 saiki kosong.
  3. Objek anyar digawe lan ditambahake menyang Eden. Sawetara obyek ing Eden lan spasi-1 dadi mati.
  4. Ana GC cilik - kabeh obyek mati dibusak saka Eden lan spasi-1. Kabeh obyek urip dipindhah menyang spasi-2 (ToSpace). Eden lan spasi-1 kosong.

Mangkono, sawayah-wayah, salah sawijining papan sing slamet tansah kosong. Nalika slamet tekan ambang tartamtu kanggo pindhah liwat spasi slamet, padha maju menyang generasi lawas.

Sampeyan bisa nggunakake gendera -Xmn kanggo nyetel ukuran generasi enom .

Generasi lawas

Obyek sing manggon wektu sing signifikan (contone, umume umur program) pungkasane dadi obyek lawas - centenarians. Iki uga dikenal minangka generasi biasa lan ngemot obyek sing wis suwe ditinggalake ing Survivor Spaces.

Ambang umur obyek nemtokake jumlah siklus pangumpulan sampah sing kudu ditindakake sadurunge dipindhah menyang generasi lawas. Proses nalika obyek dikirim menyang sampah saka generasi lawas diarani acara pengumpulan sampah utama.

Sampeyan bisa nggunakake gendera -Xms lan -Xmx kanggo nyetel ukuran memori tumpukan awal lan maksimum .

Amarga Jawa nggunakake koleksi sampah generasi, luwih akeh acara koleksi sampah sing dialami obyek, luwih maju ing tumpukan kasebut. Dheweke diwiwiti ing generasi enom lan pungkasane bakal dadi generasi biasa yen umure cukup suwe.

Kanggo mangerteni promosi obyek antarane spasi lan generasi, coba conto ing ngisor iki:

Nalika obyek digawe, pisanan diselehake ing papan Eden generasi enom.

Sanalika ana koleksi sampah cilik, obyek urip saka Eden dipindhah menyang FromSpace. Nalika koleksi sampah cilik sabanjure kedadeyan, obyek urip saka Eden lan ruang dipindhah menyang ToSpace.

Siklus iki terus kaping pirang-pirang. Yen obyek isih "ing layanan" sawise titik iki, siklus uwuh sabanjuré bakal pindhah menyang papan generasi lawas.

Generasi permanen lan metaspace

Metadata kaya kelas lan metode disimpen ing generasi terus-terusan. JVM ngisi wektu runtime adhedhasar kelas sing digunakake dening aplikasi kasebut. Kelas sing ora digunakake maneh bisa dadi saka generasi permanen dadi sampah.

Sampeyan bisa nggunakake gendera -XX:PermGen lan -XX:MaxPermGen kanggo nyetel ukuran awal lan maksimum generasi permanen .

ruang meta

Wiwit Java 8, ruang PermGen wis diganti karo ruang memori MetaSpace. Implementasine beda karo PermGen - papan tumpukan iki saiki diganti kanthi otomatis.

Iki ngindari masalah metu saka memori aplikasi sing dumadi amarga ukuran winates saka papan numpuk PermGen kang. Memori Metaspace bisa diklumpukake sampah, lan kelas sing ora digunakake maneh bakal diresiki kanthi otomatis nalika metaspace tekan ukuran maksimal.

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION