Ralat Habis Memori: Ruang Heap Java
Ralat ruang heap Java berlaku apabila program cuba memperuntukkan lebih banyak memori daripada yang tersedia dalam timbunan. Ini boleh berlaku atas pelbagai sebab, termasuk:
-
Ruang Timbunan Tidak Statik: Walaupun pembolehubah contoh menduduki ruang timbunan, adalah tidak betul untuk menganggap bahawa ruang timbunan hanyalah diperuntukkan pada penciptaan objek. Malah, ruang timbunan boleh diperuntukkan dan diagihkan secara dinamik sepanjang pelaksanaan program. Jika kejadian baharu terus dibuat tanpa kejadian yang sepadan dikumpul, ia boleh menyebabkan kehabisan ruang timbunan.
-
Penciptaan Objek Berlebihan: Benang boleh menyumbang kepada keletihan ruang timbunan dengan mencipta kekosongan ruang yang berlebihan bilangan objek, terutamanya jika objek tersebut tidak dikeluarkan selepas digunakan. Ini boleh membawa kepada situasi di mana penggunaan memori berkembang secara tidak terkawal, akhirnya membawa kepada ralat di luar ingatan.
-
Menghalang Pengumpulan Sampah: Kegagalan untuk melepaskan objek melalui pembersihan atau penamatan yang betul boleh menghalang keupayaan pemungut sampah untuk menuntut semula ingatan yang tidak digunakan. Akibatnya, objek terus menempati ruang timbunan, walaupun ia tidak lagi diperlukan, akhirnya membawa kepada ralat ruang timbunan.
Penyelesaian:
-
Meningkatkan Ruang Timbunan: Untuk meningkatkan saiz timbunan Java, baris arahan berikut argumen boleh digunakan:
- -Xms: Menetapkan saiz timbunan awal.
- -Xmx: Menetapkan saiz timbunan maksimum.
-
Mengoptimumkan Pengurusan Objek: Untuk mengurangkan penggunaan ruang timbunan, pertimbangkan strategi berikut:
- Elakkan mencipta objek yang tidak perlu.
- Keluarkan rujukan kepada objek yang tidak diperlukan lagi.
- Gunakan kumpulan objek untuk mengurus penciptaan dan penggunaan semula objek dengan cekap.
- Cache objek yang kerap digunakan untuk meminimumkan penciptaan objek.
-
Pengesanan Profil dan Kebocoran: Alat pemprofilan seperti pemprofil NetBeans boleh membantu mengenal pasti kawasan yang mempunyai bilangan objek yang berlebihan. dicipta atau kebocoran memori berlaku. Alat ini memberikan cerapan tentang peruntukan objek dan gelagat pengumpulan sampah, membolehkan pembangun mengoptimumkan kod mereka dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Java Heap Space OutOfMemoryError?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!