Region Heap JVM dan Siklus Hidup Objek
Pelajari Young Generation (Eden, Survivor), Old Generation, dan Metaspace serta cara objek berpindah di antaranya.
Region Heap JVM dan Siklus Hidup Objek adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.
Model Memori JVM
JVM membagi memori menjadi beberapa area. Heap menyimpan semua instans kelas dan larik. Area di luar heap mencakup Metaspace (metadata kelas), bingkai tumpukan, dan memori native.
Generasi Muda: Ruang Eden
Objek yang baru dialokasikan masuk ke Eden. Saat Eden penuh, GC minor berjalan. Objek yang bertahan disalin ke ruang Survivor.
// Object allocation starts in Eden:
String s = new String("hello"); // allocated in Eden
List<Integer> list = new ArrayList<>(); // also EdenRuang Survivor: S0 dan S1
Dua ruang Survivor (S0 dan S1) menyimpan objek yang telah bertahan setidaknya melalui satu GC. Objek berpindah secara bergantian antara S0 dan S1 pada setiap GC minor. Penghitung usianya bertambah.
Ambang Promosi Usia
Saat usia objek melampaui ambang promosi usia—nilai bawaan 15—objek tersebut dipromosikan ke Generasi Tua. Objek besar dapat melewati Generasi Muda dan langsung masuk ke Generasi Tua.
// JVM flags:
// -XX:MaxTenuringThreshold=15 (default)
// -XX:PretenureSizeThreshold=1m (objects > 1MB go directly to Old Gen)Generasi Tua (Ruang Tenured)
Objek berumur panjang berada di Generasi Tua. GC mayor (penuh) mengumpulkan Generasi Tua dan lebih mahal. Mengurangi jumlah objek berumur panjang menurunkan frekuensi GC penuh.
Metaspace (Java 8+)
Metaspace menggantikan PermGen di Java 8. Metaspace menyimpan metadata kelas, bytecode metode, dan String yang diinternalkan. Metaspace menggunakan memori native dan bertambah secara dinamis, dengan batas melalui -XX:MaxMetaspaceSize.
// Flag examples:
// -XX:MetaspaceSize=64m (initial Metaspace size)
// -XX:MaxMetaspaceSize=256m (cap to avoid native OOM)Jalur Cepat Alokasi Objek
JVM menggunakan Buffer Alokasi Lokal Utas (TLAB) untuk mengalokasikan objek dari Eden tanpa sinkronisasi. Setiap utas memiliki bagian kecil Eden sendiri.
Siklus Hidup Objek: Keterjangkauan
Sebuah objek masih aktif jika dapat dijangkau dari akar GC—variabel tumpukan, bidang statis, atau referensi JNI. Objek yang tidak dapat dijangkau menjadi kandidat untuk dikumpulkan.
Object a = new Object(); // reachable via local variable
a = null; // now unreachable — eligible for GCReferensi Lunak, Lemah, dan Fana
SoftReference dihapus sebelum OOM (digunakan untuk cache). WeakReference dihapus pada GC berikutnya. PhantomReference digunakan untuk pembersihan setelah objek tidak lagi hidup.
Cache<String, Image> cache = new LinkedHashMap<>();
// Use SoftReference to let GC reclaim cache under memory pressure:
SoftReference<Image> ref = new SoftReference<>(loadHeavyImage());
Image img = ref.get(); // null if GC collected itFinalisasi Objek (Hindari)
finalize() sudah tidak digunakan dan tidak dapat diprediksi—GC memanggilnya sebelum mengumpulkan objek, tetapi waktunya tidak dijamin. Gunakan Cleaner (Java 9+) atau try-with-resources sebagai gantinya.
Flag Ukuran Heap
Atur heap dengan -Xms (awal) dan -Xmx (maksimum). Samakan nilainya di produksi untuk menghindari jeda akibat perubahan ukuran heap.
// Recommended production flags:
// -Xms512m -Xmx512m (fix heap to 512 MB)
// -XX:NewRatio=2 (Old:Young = 2:1)Pemeriksaan Singkat
Di mana objek yang baru dialokasikan pertama kali berada dalam heap JVM?
Ringkasan
Heap JVM memiliki Generasi Muda (Eden + ruang Survivor) dan Generasi Tua. Objek menua melalui GC minor lalu dipromosikan. Metaspace menyimpan metadata kelas. Kendalikan dengan -Xms/-Xmx dan flag penyesuaian.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Region Heap JVM dan Siklus Hidup Objek” gratis?
Ya — teks lengkap “Region Heap JVM dan Siklus Hidup Objek” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Region Heap JVM dan Siklus Hidup Objek”?
Pelajari Young Generation (Eden, Survivor), Old Generation, dan Metaspace serta cara objek berpindah di antaranya. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Region Heap JVM dan Siklus Hidup Objek” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Region Heap JVM dan Siklus Hidup Objek
- Algoritma GC: Serial, G1, ZGC, Shenandoah
- Mendeteksi dan Memperbaiki Kebocoran Memori
- Flag Penyetelan GC dan Pembuatan Profil dengan JVisualVM