Pengaturan Parameter Tes:
1. Looping untuk memanggil A () baru untuk mencapai tumpukan overflow, java.lang.outofmemoryError: Java Heap Space,
Parameter mesin virtual: -xms1m -xmx1m -xx:+heapdumponoutofmemoryError, Penjelasan: Pengaturan -xmx dan -xms ke hal yang sama dapat menghindari ekspansi otomatis heap. -Xx:+heapdumponoutofmemoryError memungkinkan mesin virtual untuk membuang snapshot dump memori heap saat ini ketika pengecualian meluap memori terjadi.
// while (true) {// new a (). do2 (); //}2. Looping untuk memanggil referensi objek untuk mencapai stack overflow. java.lang.stackoverflowerror,
Parameter mesin virtual: -xss128k,
Penjelasan: Tetapkan ukuran tumpukan mesin virtual ke 128kn
Di bawah satu utas, kesalahan di atas akan dilemparkan terlepas dari apakah bingkai tumpukan terlalu besar atau kapasitas tumpukan mesin virtual terlalu kecil dan memori tidak dapat dialokasikan.
void do2 () {do2 ();};3. Looping untuk memanggil metode string.INNERN () untuk menulis ke kumpulan konstan, dan kumpulan konstan meluap. java.lang.outofmemoryError: Ruang Permgen
while (true) {list.add (string.valueof (i ++). magang ()); }Parameter Mesin Virtual: -xx: Permsize = 10m -xx: maxpermsize = 10m,
Penjelasan: Menunjukkan kapasitas dan kapasitas maksimum generasi permanen yang awalnya dialokasikan oleh JVM. (Area permanen memiliki memori yang tidak mencukupi, dan semuanya ada di tumpukan setelah 1.8. Area metode = generasi permanen, ruang permgen ", yaitu generasi permanen)
Empat Negara Referensi: (Kelas Warisan Memperluas Lemah Referensi <RABRE>)
1. Kutipan Kuat: Objek OBJ = Objek Baru (). Selama kutipan yang kuat masih ada, pengumpul sampah tidak akan pernah mengumpulkan objek yang direferensikan;
2. Softreference: Softreference, objek yang terkait dengan referensi lunak akan didaur ulang ketika ada memori yang tidak memadai. Jika tidak ada cukup memori dalam daur ulang ini, pengecualian overflow memori akan dilemparkan; Softreference <byte []> sr = softreference baru <byte []> (bytes);
3. Referensi lemah: Referensi lemah, objek yang terkait dengan referensi lemah hanya dapat bertahan sampai pengumpulan sampah berikutnya;
4. Referensi Virtual: Phantomreference, Referensi Virtual digunakan untuk melacak status daur ulang objek.
Waktu sementara untuk memicu GC:
1. Ketika generasi muda atau generasi yang lebih tua penuh, mesin virtual Java tidak dapat lagi mengalokasikan ruang memori untuk objek baru, maka mesin virtual Java akan memicu GC untuk mendaur ulang objek yang tidak akan lagi digunakan.
2. System.gc (), runtime.getRuntime (). Metode GC () biasanya memicu GC penuh dan setidaknya satu GC kecil, dan mungkin tidak segera didaur ulang.
3. dipicu saat server idle atau lansia berada di tumpukan.
Mendaur ulang ruang yang ditempati oleh objek tanpa referensi, bukan objek itu sendiri.
Tetapi juga tidak dapat diprediksi pada titik apa mekanisme pengumpulan sampah nyata akan mulai mengambil tindakan (sumber yang tidak terbuka), yang merupakan prinsip yang sama dengan utas preemptive ketika itu berlaku.
Algoritma Koleksi Generasi:
Kolektor generasi baru dan kolektor generasi senior.
Algoritma Mark-Clearing
Algoritma Mark-Organisasi
Perbedaan antara memori overflow dan kebocoran memori:
1. Memory Overflow: Program ini tidak memiliki ruang yang cukup saat mengalokasikan memori.
2. Memori Kebocoran: Setelah program berlaku untuk memori, ia tidak memiliki cara untuk membebaskan memori. Itu selalu menempati memori, yaitu, objek yang dialokasikan dapat dicapai tetapi tidak berguna. Kebocoran memori biasanya disebabkan oleh objek besar dalam memori, tetapi tidak dapat dilepaskan. Akan menyebabkan memori meluap.
Paralel dan konkurensi:
1. Paralel: mengacu pada pengoperasian beberapa utas pengumpul sampah;
2. Concurrency: mengacu pada utas pengguna dan utas pengumpul sampah bekerja secara bersamaan.
Mekanisme pemuatan kelas:
1. Memuat (menghasilkan objek java.lang.class), verifikasi, persiapan, parsing, inisialisasi (proses penugasan), gunakan (menggunakan) dan pembongkaran (bongkar muat)
2. Verifikasi (apakah informasi yang terkandung dalam aliran byte benar dan apakah itu sesuai dengan JVM),
Siapkan (tetapkan nilai ke variabel kelas, yaitu variabel statis, tetapkan 0),
Tiga bagian parsing (ganti referensi simbolik dengan referensi langsung, file kelas ke memori) secara kolektif disebut tautan (tautan)
3. Tahap pemuatan: Dapatkan aliran biner dari file .class;
Masukkan isi informasi kelas, variabel statis, bytecode, dan konstanta ke dalam area metode
Menghasilkan objek java.lang.class yang mewakili file .class ini dalam memori, sebagai portal akses untuk berbagai data di area metode kelas ini.
4. Apa yang Anda lakukan pada tahap inisialisasi adalah memanggil metode klien> untuk menetapkan variabel statis ke nilai yang ditentukan pengguna dan menjalankan blok kode statis.
Model Delegasi Induk: (Mulai Loader Kelas> Loader Kelas Diperpanjang> Loader Kelas Aplikasi> Loader Kelas Kustom)
Loader kelas menerima permintaan pemuatan kelas dan mendelegasikan permintaan ke loader kelas induk untuk menyelesaikannya. Hanya setelah kelas induk gagal menyelesaikannya, akan menyelesaikannya sendiri.
Prinsip Kejadian:
Tidak mungkin hanya mengandalkan pada sinkronisasi dan volatile untuk membatasi urutan dalam memori Java. Itu tergantung pada aturan pesanan panggilan program untuk menentukan urutan setter dan getters.
Minor GC: Bersihkan memori sabuk muda, tidak dapat mengalokasikan ruang untuk objek baru.
Mayor GC: Ini untuk membersihkan usia tua, dan banyak GC utama dipicu oleh GC kecil
GC penuh: Ini untuk membersihkan seluruh ruang tumpukan - termasuk generasi muda dan generasi yang lebih tua