Kelingan apa wae sing ana ing Jawa
Pengumpulan sampah yaiku proses mbalekake memori runtime lengkap kanthi ngrusak obyek sing ora digunakake.
Kadhangkala programmer bisa lali kanggo numpes obyek sing ora ana guna, lan memori sing diparengake kanggo wong-wong mau ora dibebasake. Memori sistem liyane lan liyane migunakaken, lan pungkasanipun ora ana liyane diparengake. Aplikasi kasebut nandhang sangsara marga saka "bocor memori".
Sawise titik tartamtu, ora ana maneh cukup memori kanggo nggawe obyek anyar lan program mungkasi abnormally amarga OutOfMemoryError .
![](https://cdn.codegym.cc/images/article/3000851c-d7b0-48c1-a1b0-42fc199942d5/800.jpeg)
Ngumpulake sampah ing Jawa yaiku proses program Jawa ngatur memori kanthi otomatis. Program Java dikompilasi dadi bytecode sing mlaku ing Java Virtual Machine (JVM).
Nalika program Java mbukak ing JVM, obyek digawe ing numpuk, kang bagean memori diparengake kanggo wong-wong mau.
Nalika aplikasi Java lagi mlaku, obyek anyar digawe ing. Ing pungkasan, sawetara obyek ora dibutuhake maneh. Kita bisa ngomong yen ing sembarang wektu tartamtu, tumpukan memori kasusun saka rong jinis obyek.
- Urip - Objek iki digunakake, dirujuk saka papan liya.
- Mati - obyek iki ora digunakake ing ngendi wae, ora ana referensi kanggo wong-wong mau.
Penagih sampah nemokake obyek sing ora digunakake iki lan mbusak kanggo mbebasake memori.
Ngumpulake sampah ing Jawa iku proses otomatis . Programmer ora perlu menehi tandha kanthi jelas obyek sing bakal dibusak.
Saben JVM bisa ngetrapake versi koleksi sampah dhewe. Nanging, kolektor kudu tundhuk karo spesifikasi JVM standar kanggo ngatasi obyek sing ana ing memori tumpukan kanggo menehi tandha utawa ngenali obyek sing ora bisa digayuh lan numpes liwat pemadatan.
Tekan Obyek
Kanggo ngenali obyek minangka urip, ora ana pranala cukup. Iki amarga sawetara obyek mati bisa ngrujuk menyang obyek mati liyane. Mulane perlu ing antarane kabeh referensi kanggo obyek, kudu paling sethithik siji saka obyek "urip".
![Tekan Obyek](https://cdn.codegym.cc/images/article/eb12b7bc-7401-440e-a551-9b4461ba3b5d/800.jpeg)
Pengumpul sampah nggarap konsep GC Roots ( akar koleksi sampah ) kanggo mbedakake obyek urip lan mati. Ana 100% obyek urip lan saka wong-wong mau ana pranala sing nguripake obyek liyane lan liya-liyane.
Conto akar kasebut:
- Kelas sing dimuat dening loader kelas sistem.
- Live stream.
- Parameter metode eksekusi saiki lan variabel lokal.
- Obyek sing digunakake minangka monitor kanggo sinkronisasi.
- Obyek sing disimpen saka koleksi sampah kanggo sawetara tujuan.
- Penagih sampah mlaku liwat kabeh grafik obyek ing memori, diwiwiti saka oyod kasebut lan ngetutake referensi kanggo obyek liyane.
Langkah-langkah nglumpukake sampah ing Jawa
Implementasi pengumpulan sampah standar duwe telung langkah.
1. Tandhani obyek minangka urip
Ing titik iki, kolektor sampah (GC) kudu ngenali kabeh obyek urip ing memori kanthi ngliwati grafik obyek.
Nalika ngunjungi obyek, tandha iku kasedhiya lan mulane urip. Kabeh obyek sing ora bisa diakses saka werna GC dianggep minangka calon kanggo koleksi sampah.
![](https://cdn.codegym.cc/images/article/483e8406-ce8f-458a-8217-c6c2e2c70b2c/800.jpeg)
2. Ngresiki barang mati
Sawise fase markup, ruang memori dikuwasani dening obyek urip (dibukak) utawa mati (ora dibukak). Tahap ngresiki mbebasake pecahan memori sing ngemot obyek mati iki.
![](https://cdn.codegym.cc/images/article/f10e166d-d9bf-462d-9d65-2c81df1b3457/800.jpeg)
3. susunan kompak saka obyek isih ing memori
Sampeyan ora perlu kanggo obyek mati sing dibusak ing phase sadurungé jejere saben liyane. Mangkono, sampeyan duwe risiko entuk ruang memori sing pecah (setengah kosong).
Nanging, mesthi, wis kasedhiya kanggo iki, iku bisa kanggo kompak memori ing wayahe nalika kolektor sampah mbusak obyek mati. Sisane bakal ana ing blok sing cedhak ing wiwitan tumpukan.
Proses pemadatan nggampangake alokasi memori kanthi urutan kanggo obyek anyar.
![](https://cdn.codegym.cc/images/article/7008ce12-e886-44e5-8812-8431b4f7c741/800.jpeg)