Saya perlu menjalankan aplikasi intensif memori Java yang menggunakan lebih dari 2GB, tetapi saya mengalami masalah untuk meningkatkan ukuran maksimum heap. Sejauh ini, saya telah mencoba pendekatan berikut:
Menyetel parameter -Xmx, mis. -Xmx3000m. Pendekatan ini gagal saat pembuatan JVM. Dari apa yang saya googling, sepertinya -Xmx harus kurang dari 2GB.
Menggunakan opsi -XX: + AggressiveHeap . Ketika saya mencoba pendekatan ini, saya mendapatkan pesan kesalahan 'Memori tidak cukup' yang menginformasikan bahwa ukuran tumpukan adalah 1273,4 MB, meskipun komputer saya memiliki memori 8 GB.
Apakah ada pendekatan lain yang dapat saya coba untuk meningkatkan ukuran heap maksimum JVM? Berikut ringkasan spesifikasi komputernya:
- OS: Windows 7 (64 bit)
- Prosesor: Intel Core i7 (2,66 GHz)
- Memori: 8 GB
- java -version:
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
java
jvm
jvm-arguments
Alceu Costa
sumber
sumber
Jawaban:
Dapatkan sendiri JVM 64-bit dari Oracle .
sumber
Saat Anda menggunakan JVM dalam mode 32-bit, ukuran heap maksimum yang dapat dialokasikan adalah 1280 MB. Jadi, jika Anda ingin lebih dari itu, Anda perlu menjalankan JVM dalam mode 64.
Anda dapat menggunakan berikut ini:
dimana,
Anda dapat menyetel -Xms dan -Xmx sesuai kebutuhan Anda (YMMV)
Sumber daya yang sangat bagus tentang penyetelan kinerja JVM, yang mungkin ingin Anda lihat: http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html
sumber
Saya yakin batas 2GB adalah untuk Java 32-bit. Saya pikir v1.6 selalu 64 bit, tetapi coba paksa mode 64 bit hanya untuk melihat: tambahkan opsi -d64.
sumber
Java 32-bit dibatasi hingga sekitar 1,4 hingga 1,6 GB.
FAQ tumpukan Oracle 32 bit
Kutipan
Batas heap teoretis maksimum untuk JVM 32-bit adalah 4G. Karena berbagai kendala tambahan seperti swap yang tersedia, penggunaan ruang alamat kernel, fragmentasi memori, dan overhead VM, dalam praktiknya, batasnya bisa jauh lebih rendah. Pada kebanyakan sistem Windows 32-bit modern, ukuran heap maksimum akan berkisar dari 1.4G hingga 1.6G. Pada kernel Solaris 32-bit, ruang alamat dibatasi hingga 2G. Pada sistem operasi 64-bit yang menjalankan VM 32-bit, ukuran heap maksimal bisa lebih tinggi, mendekati 4G di banyak sistem Solaris.
sumber
Konfigurasi di bawah berfungsi untuk saya:
JAVA_HOME=/JDK1.7.51-64/jdk1.7.0_51/ PATH=/JDK1.7.51-64/jdk1.7.0_51/bin:$PATH export PATH export JAVA_HOME JVM_ARGS="-d64 -Xms1024m -Xmx15360m -server" /JDK1.7.51-64/jdk1.7.0_51/bin/java $JVM_ARGS -jar `dirname $0`/ApacheJMeter.jar "$@"
sumber