Alasan: Berikut ini adalah umum:
1. Jumlah data yang dimuat dalam memori terlalu besar, seperti mengambil terlalu banyak data dari database sekaligus;
2. Ada referensi ke objek di kelas koleksi, dan mereka tidak dibersihkan setelah digunakan, sehingga JVM tidak dapat didaur ulang;
3. Ada loop mati dalam kode atau loop yang menghasilkan terlalu banyak pengulangan;
4. Bug dalam perangkat lunak pihak ketiga yang digunakan;
5. Nilai memori dari parameter startup diatur terlalu kecil;
Permintaan kesalahan umum:
1.Tomcat: java.lang.outofmemoryError: Permgen Space
2.tomcat: java.lang.outofmemoryError: Java Heap Space
3.WebLogic: Akar Penyebab ServletException Java.lang.outofmemoryError
4.Resin: java.lang.outofmemoryError
5.java:java.lang.outofmemoryError
menyelesaikan:
1. Solusi untuk kesalahan yang diminta oleh server aplikasi: Atur nilai memori dari parameter startup menjadi cukup besar.
2. Solusi untuk kesalahan yang disebabkan oleh kode java: fokus pada poin -poin berikut:
1) Periksa apakah ada loop mati atau panggilan rekursif dalam kode.
2) Periksa apakah ada loop besar yang berulang kali menghasilkan entitas objek baru.
3) Periksa apakah ada kueri yang telah memperoleh semua data dalam kueri database. Secara umum, jika Anda membawa 100.000 catatan ke dalam memori sekaligus, itu dapat menyebabkan memori meluap. Masalah ini cukup tersembunyi. Sebelum online, ada lebih sedikit data dalam database dan tidak mudah memiliki masalah. Setelah online, ada lebih banyak data dalam database, dan satu kueri dapat menyebabkan overflow memori. Oleh karena itu, cobalah menggunakan pagination untuk meminta kueri basis data.
4) Periksa apakah objek koleksi seperti daftar, peta belum dibersihkan setelah digunakan. Objek koleksi seperti daftar dan peta akan selalu memiliki referensi ke objek, membuat objek ini tidak dapat didaur ulang oleh GC.
Kasus:
1. Saat hibernasi data kueri, itu menanyakan terlalu banyak data sekaligus. Kemudian, kode di bagian ini disesuaikan, dan hanya jumlah data yang ditentukan yang diambil pada suatu waktu, berhasil menyelesaikan masalah. 2. Saat melakukan tes stres, OutofmemoryError muncul dan ditemukan bahwa sumber daya sesi belum dirilis. Yang terbaik adalah merilis sumber daya sesi melalui metode Invalidate () dari sesi ini.
3. Loop mati muncul dalam program.
4. OutofmemoryError muncul ketika tomcat digunakan dan dijalankan, dan nilai parameter memori ditingkatkan untuk menyelesaikan masalah ini.
java.lang.outofmemoryError di Tomcat: Java Heap Space Exception Handling
1. Ketika JVM dimulai, itu akan secara otomatis mengatur nilai ukuran tumpukan. Ruang awalnya (mis. -Xms) adalah 1/64 memori fisik, dan ruang maksimum (-xmx) adalah 1/4 dari memori fisik. Anda dapat menggunakan -xmn -xms -xmx dan opsi lain yang disediakan oleh JVM untuk mengaturnya. Ukuran ukuran tumpukan adalah jumlah generasi muda dan generasi bertenor. Kiat: Pesan pengecualian ini akan dilemparkan jika 98% dari waktu digunakan untuk GC dan ukuran tumpukan yang tersedia kurang dari 2%. Tip: Ukuran tumpukan maksimum tidak boleh melebihi 80% dari memori fisik yang tersedia. Secara umum, atur opsi -xms dan -xmx ke tempat yang sama, sedangkan -xmn adalah 1/4 dari nilai -xmx.
2. Solusi: Secara manual mengatur ukuran heap dan memodifikasi tomcat_home/bin/catalina.sh Tambahkan baris berikut ke "echo" menggunakan catalina_base: $ catalina_base "": java_opts = " -server -xms800m -xmx800m -xx: maxnewsize = 256m"
Java.lang.outofmemoryError: Penanganan Permgen Space Exception di Tomcat
1. Ruang Permgen Nama lengkap ruang permgen adalah ruang generasi permanen, yang mengacu pada area penyimpanan memori permanen. Sepotong memori ini terutama disimpan oleh JVM. Kelas akan ditempatkan di ruang Permgen saat dimuat. Ini berbeda dari area heap di mana instance kelas (instance) disimpan. GC (Pengumpulan Sampah) tidak akan membersihkan ruang Permgen selama runtime program utama. Oleh karena itu, jika ada banyak kelas dalam aplikasi Anda, sangat mungkin bahwa kesalahan ruang Permgen akan terjadi. Kesalahan ini biasa terjadi ketika server web memperkirakan JSP. Jika Anda menggunakan sejumlah besar stoples pihak ketiga di bawah aplikasi web Anda, ukurannya melebihi ukuran default JVM (4m), maka pesan kesalahan ini akan dihasilkan.
Solution: Manually set the MaxPermSize size and modify TOMCAT_HOME/bin/catalina.sh Add the following line to "echo "Using CATALINA_BASE: $CATALINA_BASE"": JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m Recommendation: Move the same third-party jar file to the tomcat/shared/lib directory, so untuk mencapai tujuan mengurangi penggunaan memori berulang dari dokumen JAR.
java.lang.outofmemoryError Pengecualian Penanganan di WebLogic
Prompt Kesalahan: "Akar Penyebab ErvletException Java.lang.outofmemoryError"
Solusi: Sesuaikan parameter dalam comenv di BEA/WebLogic/Common: Sun if "%production_mode%" == "true" goto sun_prod_mode set java_vm = -client set mem_args = -xms256m -xmx512m -xx: maxpermsize = 256m set java_aFax =%java_aVon =%java_aPon =%JAVA_OVIONS =%JAVA_PERONS = 256M = 256M. : sun_prod_mode set java_vm = -server set mem_args = -xms256m -xmx512m -xx: maxpermsize = 256m goto lanjut
java.lang.outofmemoryError saat Eclipse menjalankan JBoss: Permgen Space Exception Handling
Saat menjalankan JBoss di Eclipse, jika terlalu lama, terkadang java.lang.outofmemoryError: Kesalahan ruang permen. Ini solusi untuk Anda:
1) Klik panah kecil di sebelah ikon debug;
2) klik item menu "Debug Configurations ...";
3) Pilih "JBoss V4.2 di LocalHost" di bawah pohon "Server Generik" di sebelah kiri;
4) Klik tab "Argumen" di sebelah kanan dan tambahkan di "Argumen VM":
-Dprogram.name = run.bat -djava.endorsed.dirs = "d:/jboss405/bin /../ lib/disahkan" -xms128m -xmx512m -xx: permsize = 64m -xx: maxpermize = 256m
5) If you run JBoss in command line mode or directly click "run.bat", you have to modify the JVM options in the bin/run.conf file, find the JAVA_OPTS="-Xms128m -Xmx512m..." paragraph, and then add "-XX:PermSize=64m -XX:MaxPermSize=256m" to the end. Simpan tidak apa -apa.
6) Catatan: Angka 128, 512, 64 dan 256 dapat disesuaikan sesuai dengan konfigurasi mesin Anda, dan kemudian klik "Terapkan".
java.lang.outofmemoryerror penanganan pengecualian di bawah resin
Alasan: Kesalahan ini terjadi karena memori fisik JVM terlalu kecil. Mesin virtual Java default memiliki memori maksimum hanya 64 megabyte, yang mungkin tidak ada masalah selama pengembangan dan debugging, tetapi jauh dari memenuhi kebutuhan di lingkungan aplikasi yang sebenarnya kecuali aplikasi Anda sangat kecil dan tidak memiliki akses. Kalau tidak, Anda dapat menemukan kesalahan dalam paket java.lang.outofmemoryError setelah program berjalan untuk jangka waktu tertentu. Oleh karena itu, kita perlu meningkatkan ukuran memori mesin virtual yang tersedia untuk reservoir.
Solusi: Ubah opsi ARGS di /usr/local/resin/bin/httpd.sh untuk menambahkan parameter -xms (memori awal) dan -xmx (ukuran memori maksimum dapat digunakan) yang dapat digunakan untuk membatasi penggunaan memori fisik JVM. Sebagai contoh: Setelah pengaturan args = " -xms128m -xmx256m", memori fisik awal JVM adalah 128m, dan memori fisik maksimum dapat digunakan adalah 256m. Kedua nilai ini harus ditetapkan oleh administrator sistem sesuai dengan situasi aktual server.
Di atas adalah konten lengkap dari solusi sempurna untuk masalah penanganan kesalahan java.lang.outofmemoryError yang dibawa kepada Anda. Saya harap semua orang akan mendukung wulin.com ~