Saya mendapatkan pengecualian berikut berulang kali setiap kali saya mencoba menjalankan program.
Kesalahan terjadi selama inisialisasi VM
Tidak dapat memesan ruang yang cukup untuk tumpukan objek
Tidak dapat membuat mesin virtual java.
Saya mencoba meningkatkan memori virtual (ukuran halaman) dan ukuran RAM, tetapi tidak berhasil.
Bagaimana saya bisa menghilangkan kesalahan ini?
Jawaban:
Jalankan JVM dengan
-XX:MaxHeapSize=512m
(atau jumlah besar yang Anda butuhkan) (atau-Xmx512m
singkatnya)sumber
Ini juga dapat disebabkan oleh pengaturan sesuatu yang terlalu besar pada 32-bit HotSpot vm, misalnya:
di mana ini mungkin / akan berhasil:
sumber
ini dia cara memperbaikinya:
Pergi ke Start-> Control Panel-> System-> Advanced (tab) -> Variabel Lingkungan-> Sistem
Variabel-> Baru: Nama
_JAVA_OPTIONS
variabel: Nilai-Xmx512M
variabel: NamaPath
variabel: Nilai variabel:
%PATH%;C:\Program Files\Java\jre6\bin;F:\JDK\bin;
Ubah ini ke jalur yang sesuai Anda.
sumber
Saya mengalami ini ketika menggunakan javac, dan sepertinya tidak mengambil opsi baris perintah,
jadi solusinya di sini begitu atur _JAVA_OPTIONS
Dan ini mengkompilasi dengan baik.
Ini terjadi pada saya pada mesin dengan banyak RAM, tetapi dengan memori yang lebih rendah. Java memutuskan untuk mengalokasikan tumpukan besar karena mendeteksi ram di mesin, tetapi tidak diizinkan mengalokasikannya karena ulimit.
sumber
Java 32-bit membutuhkan ruang kosong yang berdekatan dalam memori untuk dijalankan. Jika Anda menentukan ukuran tumpukan besar, mungkin tidak ada begitu banyak ruang kosong yang berdekatan di memori bahkan jika Anda memiliki lebih banyak ruang kosong yang tersedia daripada yang diperlukan.
Menginstal versi 64-bit Java membantu dalam kasus ini, persyaratan memori yang berdekatan hanya berlaku untuk Java 32-bit.
sumber
Dikombinasikan dengan -Xmx512M gunakan -d64 untuk memastikan Anda menjalankan VM 64-bit. Pada mesin 64-bit saya berpikir pasti saya menjalankan mesin virtual 64-bit, tetapi tidak. Setelah menginstal Java 64-bit, opsi -d64 bekerja dan -Xmx memungkinkan ukuran memori yang jauh lebih besar.
sumber
Saya mendapatkan kesalahan yang sama dan menyelesaikannya dengan mengonfigurasinya di run.conf.bat
Jalankan JVM dengan mengkonfigurasi run.conf.bat di Jboss5x
Jika memori bebas tidak tersedia SEBAGAI Anda menyampaikan dalam pernyataan maka silakan membuat perubahan di run.conf.bat
sumber
Saya tahu sudah ada banyak jawaban di sini, tetapi tidak ada yang membantu saya. Pada akhirnya saya membuka file
/etc/elasticsearch/jvm.options
dan mengubah:untuk
Itu menyelesaikannya untuk saya. Semoga ini bisa membantu orang lain di sini.
sumber
Saya memiliki masalah serupa. Saya telah menginstal versi 32 bit Java pada mesin 64 bit.
Dengan menghapus instalan versi itu dan menginstal Java versi 64 bit. Saya bisa menyelesaikan masalah ini.
sumber
Misalkan kelas Anda disebut
Test
dalam paketmypackage
. Jalankan kode Anda seperti ini:Ini akan memesan 1024 MB ruang tumpukan untuk kode Anda. Jika Anda ingin 512 MB, Anda dapat menggunakan:
Gunakan sedikit m
1024m
,512m
, dllsumber
Terkadang, kesalahan ini menunjukkan bahwa memori fisik dan swap di server benar-benar dimanfaatkan sepenuhnya!
Saya melihat masalah ini baru-baru ini di server yang menjalankan RedHat Enterprise Linux 5.7 dengan 48 GB RAM. Saya menemukan itu bahkan hanya berjalan
menyebabkan kesalahan yang sama, yang menyatakan bahwa masalahnya tidak spesifik untuk aplikasi saya.
Lari
melaporkan bahwa MemFree dan SwapFree masing-masing jauh di bawah 1% dari nilai MemTotal dan SwapTotal, masing-masing:
Menghentikan beberapa aplikasi lain yang sedang berjalan di mesin membawa angka memori bebas naik sedikit:
Pada titik ini, sebuah instance baru Java akan mulai dengan baik, dan saya dapat menjalankan aplikasi saya.
(Jelas, bagi saya, ini hanya solusi sementara; Saya masih memiliki tugas luar biasa untuk melakukan pemeriksaan yang lebih menyeluruh dari proses yang berjalan pada mesin itu untuk melihat apakah ada sesuatu yang dapat dilakukan untuk mengurangi tingkat pemanfaatan memori nominal, tanpa harus resor untuk menghentikan aplikasi.)
sumber
java -version
gagal, meskipun atas masih menunjukkan beberapa gratis: | (juga mengatakan Kesalahan terjadi selama inisialisasi VM Tidak dapat memesan ruang yang cukup untuk array penandaan kartu kadang-kadang). Memperbaiki tampaknya untuk menjalankan atas, mencari proses mana yang menggunakan RAM paling banyak (kolom VIRT), bunuh mereka [postgres, appdynamics for me]: |Kesalahan:
Untuk kesalahan, "kesalahan terjadi selama inisialisasi vm tidak dapat memesan ruang yang cukup untuk objek heap jboss"
Penyebab utama :
Alokasi memori yang tidak tepat / tidak cukup untuk JVM kami seperti yang disebutkan di bawah ini.
mis. JAVA_OPTS = "- Xms1303m -Xmx1303m -XX: MaxPermSize = 256m" di jboss-eap-6.2 \ bin \ standalone.conf atau "JAVA_OPTS = -Xms1G -Xmx1G -XX: MaxPermSize = 256M -jboss \ jboss di jboss \ standalone.conf.bat yang tidak lain adalah parameter kumpulan alokasi memori JVM.
Resolusi:
Biasanya tidak direkomendasikan untuk memiliki ukuran yang sama untuk min dan maks.
Jika Anda menjalankan aplikasi dari gerhana,
sumber
java -Xgcprio:throughput -Xmx:64m -Xms:64m myApp
"Saya baru-baru ini menghadapi masalah ini. Saya memiliki 3 aplikasi java yang dimulai dengan ukuran heap 1024m atau 1280m. Java sedang melihat ruang yang tersedia dalam swap, dan jika tidak ada cukup memori yang tersedia, jvm keluar.
Untuk mengatasi masalah ini, saya harus mengakhiri beberapa program yang memiliki sejumlah besar memori virtual yang dialokasikan.
Saya menjalankan di x86-64 linux dengan jvm 64-bit.
sumber
Saya memiliki jumlah pengaturan memori yang tepat tetapi bagi saya itu menggunakan intellij 64bit dengan 32 bit jvm. Setelah saya beralih ke VM 64 bit, kesalahan itu hilang.
sumber
Dengan asumsi Anda memiliki cukup memori bebas dan Anda menyiapkan argumen JVM dengan benar, Anda mungkin memiliki masalah fragmentasi memori. Periksa memori maksimum Java pada Windows XP .
sumber
Jika Anda menjalankan JVM 32bit, mengubah ukuran tumpukan menjadi lebih kecil mungkin akan membantu. Anda dapat melakukan ini dengan meneruskan args ke java secara langsung atau melalui variabel lingkungan seperti mengikuti,
Untuk JVM 64bit, ukuran heap yang lebih besar seperti
-Xms512M -Xmx1536M
harus bekerja.Jalankan
java -version
ataujava -d32
,java--d64
untuk Java7 untuk memeriksa versi yang Anda jalankan.sumber
Bagaimanapun, berikut adalah cara memperbaikinya: Pergi ke Start-> Control Panel-> System-> Advanced (tab) -> Variabel Lingkungan-> Variabel Sistem-> Baru: Nama variabel: _JAVA_OPTIONS Nilai variabel: -Xmx512M
ATAU
Ubah panggilan semut seperti yang ditunjukkan di bawah ini.
Ini berhasil untuk saya.
sumber
Kesalahan terjadi selama inisialisasi VM Tidak dapat memesan ruang yang cukup untuk tumpukan objek 1572864KB
Saya mengubah nilai memori dalam file settings.grade 1536 ke 512 dan itu membantu
sumber
Pergi ke Start-> Control Panel-> System-> Advanced (tab) -> Variabel Lingkungan-> Variabel Sistem-> Baru:
sumber
Jika Anda menjalankan program java: - jalankan program Anda di terminal menggunakan perintah yang benar untuk linux itu akan menjadi 'java -jar myprogram.jar' dan tambahkan -Xms256m -Xmx512m, misalnya: 'java -jar myprogram.jar Xms256m -Xmx512m '
Jika Anda menjalankan skrip .sh (linux, mac?) Atau skrip .bat (windows) buka skrip dan cari opsi java jika ada dan tingkatkan memori.
Jika semua hal di atas tidak berhasil, periksa proses Anda (ctrl + alt + delete di windows) (ps aux di linux / mac) dan matikan proses yang menggunakan banyak memori dan tidak diperlukan untuk sistem operasi Anda! => Cobalah untuk menjalankan kembali program Anda.
sumber
Di CASSANDRA_HOME / bin / cassandra.bat Anda akan menemukan konfigurasi berikut
Anda dapat mengurangi 2G ke angka yang lebih kecil misalnya 1G atau bahkan lebih rendah dan itu harus berfungsi.
Sama jika Anda menjalankan kotak unix, ubah file .sh dengan tepat.
sumber
Saya mendapat kesalahan yang sama dan teratasi ketika saya menghapus file temp menggunakan% temp% dan memulai kembali gerhana.
sumber
Terkadang itu berhubungan dengan
Jika Anda mengaturnya ke:
Itu harus bekerja.
sumber
Ganti
-Xmx2G
dengan-Xms512M
atau ukuran memori yang lebih besar dalam file cassandra.bat dalam direktori cassandra bin.sumber
Buka file gradle.properties di folder android.
Ganti baris ini:
dengan:
Penjelasan: Batas maksimum dari dokumen Gradle:
Jika lingkungan build yang diminta tidak menentukan ukuran heap maksimum, Daemon akan menggunakan heap hingga 512MB.
sumber
Tidak perlu melakukan apa pun hanya chnage dalam file POM seperti di bawah ini
sumber