Rumah > Soal Jawab > teks badan
既然 Java 的垃圾回收机制能够自动的回收内存,怎么还会出现内存泄漏的情况呢
PHP中文网2017-04-18 10:51:43
Sumber memori adalah terhad Pengumpulan sampah hanya mengitar semula "sampah".
高洛峰2017-04-18 10:51:43
Terdapat dua situasi limpahan ingatan: satu ialah limpahan tindanan, seperti memanggil ulangan tak terhingga. Terdapat juga limpahan timbunan, iaitu objek yang keluar daripada baru tidak dimusnahkan serta-merta, seperti baru sepanjang masa.
黄舟2017-04-18 10:51:43
Oleh kerana sesetengah atur cara yang ditulis dengan buruk akan mencipta objek tanpa had sebelum mekanisme GC berkuat kuasa.
大家讲道理2017-04-18 10:51:43
Secara umumnya, kebocoran memori di Java merujuk kepada fakta bahawa memori yang diperuntukkan yang tidak lagi diperlukan oleh program tidak boleh dituntut semula.
Mekanisme pengumpulan sampah menentukan sama ada memori boleh dituntut semula melalui kebolehcapaian objek dan objek Root Walau bagaimanapun, disebabkan ralat pengaturcaraan atau sebab lain, rujukan objek yang telah tamat tempoh masih dipegang dan pengumpul sampah tidak boleh menuntut semula yang berkaitan. angkasa lepas.
伊谢尔伦2017-04-18 10:51:43
Tiada apa yang boleh dia lakukan jika dia menduduki lurang dan tidak membuang air besar.
Saya syorkan membaca blog yang ditulis oleh rakan sekerja saya: http://blog.csdn.net/zhanggan...
天蓬老师2017-04-18 10:51:43
Sesetengah objek tidak lagi diperlukan tetapi sentiasa dirujuk dan tidak boleh dikitar semula
PHPz2017-04-18 10:51:43
Buat masa ini, perkara yang dibuat oleh manusia tidak boleh mengatasi algoritma GC Java yang ditulis oleh manusia, bagaimanapun, sesetengah orang akan mempertaruhkan nyawa mereka dan menulis kod yang tidak boleh dikitar semula oleh GC
PHPz2017-04-18 10:51:43
Pemahaman saya sendiri, sila betulkan saya jika saya salah.
Dalam JDK6, kaedah String dipanggil subString, yang digunakan untuk menjana substring. Untuk penjanaan yang lebih pantas, String mempunyai pembina,
String(int offset, int count, char value[]) {
this.value = value;
this.offset = offset;
this.count = count;
}
terus menghala ke tatasusunan String asal. Kita semua tahu bahawa rentetan String baharu dalam kolam malar akan dijana setiap kali. Walau bagaimanapun, rujukan ini menyebabkan String asal tidak dikitar semula. Kerana nilai subString akan menunjuk kepadanya. Ini akan menyebabkan kebocoran ingatan.
JVM melakukan GC dengan sendirinya tanpa terlalu banyak gangguan daripada pengaturcara Walau bagaimanapun, disebabkan oleh beberapa operasi yang salah, sesetengah objek yang tidak perlu digunakan masih mempunyai rujukan, yang membawa kepada kebocoran memori.
PHP中文网2017-04-18 10:51:43
JVM: Pengaturcara berpegang pada sampah, yang membuatkan saya sangat malu.