Perbaikan: Terjadi kesalahan selama inisialisasi VM tidak dapat menyediakan cukup ruang untuk tumpukan objek



Coba Instrumen Kami Untuk Menghilangkan Masalah

Meskipun applet Java bukanlah teknologi web yang populer akhir-akhir ini, ada banyak alasan untuk menerapkan mesin virtual Java langsung di server Linux. Jika Anda mencoba menjalankan perintah java Linux secara langsung baik pada perangkat keras diskrit atau di dalam VM-nya sendiri, Anda mungkin mendapatkan pesan 'kesalahan terjadi selama inisialisasi VM tidak dapat mencadangkan cukup ruang untuk tumpukan objek'.



Ini mungkin terlihat agak aneh karena Anda kemungkinan besar memiliki cukup RAM untuk menjalankan perintah, tetapi ini sebagian besar disebabkan oleh kekhasan tertentu dalam cara penggunaan halaman memori fisik dan virtual. Menentukan beberapa ukuran yang relatif besar akan memungkinkan Anda untuk sepenuhnya melewati pesan ini dan menjalankan perintah java seperti yang Anda lakukan pada yang lain.



Metode 1: Menggunakan Opsi Baris Perintah

Jika Anda telah mencoba menjalankan java dan mendapatkan pesan ini, Anda mungkin telah menjalankan perintah gratis untuk memastikan bahwa ada cukup persediaan memori untuk menjalankan program.



java & perintah gratis

Perhatikan bahwa pada mesin uji kami, kami memiliki sekitar 2,3 GB RAM fisik dan belum ada satu halaman memori virtual yang digunakan. Jika Anda menyadari bahwa Anda mengalami masalah memori, Anda dapat menutup hal-hal lain yang telah Anda jalankan sebelum mencobanya lagi. Di sisi lain, mereka yang menemukan bahwa mereka memiliki banyak memori bebas dapat mencoba menentukan ukuran secara langsung.

Misalnya, di komputer kami, kami dapat menjalankan perintah sebagai java -Xms256m -Xmx512M dan berfungsi seperti yang diharapkan. Ini membatasi ukuran heap yang coba dipesan oleh mesin virtual Java saat startup. Karena mesin virtual yang tidak terkendali dapat secara hipotetis melakukan hal-hal yang tidak biasa, itu mungkin membuang pesan kesalahan pada sistem yang bebas. Anda mungkin juga ingin bermain-main dengan kedua nilai tersebut sebelum menemukan kombinasi yang tepat.



Ini bisa menjadi masalah terlepas dari apa yang Anda jalankan karena JVM tidak ada hubungannya dengan jenis VM yang mungkin Anda gunakan untuk menjalankan GNU / Linux.

Metode 2: Mengekspor Variabel untuk Membuat Perubahan Permanen

Saat Anda menemukan nilai yang berfungsi, Anda dapat mengekspornya agar permanen untuk sesi itu. Misalnya, kami menggunakan export _JAVA_OPTIONS = '- Xms256M -Xmx512M' dari command prompt bash dan memungkinkan kami untuk menjalankan perintah java dengan sendirinya tanpa opsi lain sampai kami keluar dari server kami.

Ini perlu dijalankan lagi ketika kita login di sesi lain, jadi Anda mungkin ingin menambahkannya ke skrip startup yang relevan jika Anda berencana untuk menggunakan perintah java cukup sering. Kami menambahkan baris ke file .bash_login kami dan sepertinya berfungsi setiap kali kami menggunakan prompt masuk tanpa harus menjalankannya lagi, meskipun Anda mungkin harus mencari lokasi lain untuk itu jika Anda bekerja dengan shell yang berbeda.

Anda mungkin telah memperhatikan bahwa hanya konfigurasi perangkat keras tertentu yang memicu pesan kesalahan ini. Itu karena biasanya terjadi pada mesin dengan RAM fisik yang besar tetapi batas penggunaan yang lebih rendah. Java akan mencoba mengalokasikan blok besar hanya untuk diberi tahu bahwa ia tidak bisa, yang ditafsirkannya sebagai kehabisan memori.

Metode 3: Mencetak Opsi Java Saat Ini

Jika Anda telah bekerja di baris perintah dan menginginkan referensi cepat tentang apa yang saat ini Anda setel ke nilai _JAVA_OPTIONS, cukup jalankan echo $ _JAVA_OPTIONS dan itu akan segera mencetak nilai saat ini. Ini berguna untuk memecahkan masalah saat Anda mencoba mencari tahu angka yang tepat untuk dicoba.

Perlu diingat bahwa meskipun perbaikan ini tidak memerlukan permainan lain, Java akan mengeluarkan pesan 'tidak dapat mencadangkan cukup ruang untuk tumpukan objek' jika Anda benar-benar kehabisan memori virtual. Jika demikian, Anda sebaiknya memeriksa ulang proses apa yang sedang berjalan dan mungkin memulai ulang server jika itu adalah pilihan. Anda juga dapat membuat lebih banyak ruang swap, tetapi jika ini merupakan masalah, lebih baik mencoba dan memperbaikinya dengan cara lain.

Dalam kasus yang jarang terjadi di mana setelan Anda tampaknya benar tetapi masih tidak berfungsi, pastikan Anda telah menginstal paket Java 64-bit karena seharusnya kebal dari masalah ini. Persyaratan memori yang berdekatan hanya berlaku untuk Java versi 32-bit. Kami menemukan dalam beberapa kasus, versi 64-bit mencoba membuat mesin virtual 32-bit, jadi menentukan opsi -d64 pada baris perintah memperbaikinya untuk kami.

3 menit membaca