Jawaban:
gunakan argumennya -Xms<memory>
-Xmx<memory>
. Gunakan M
atau G
setelah angka untuk menunjukkan masing-masing Meg dan Gigs dari byte. -Xms
menunjukkan minimum dan -Xmx
maksimum.
-Xmx524M
dan prosesnya memakan 1,2 GB RAM. (?)
Anda tidak perlu khawatir tentang tumpukan memori yang bocor (sangat jarang terjadi). Satu-satunya saat Anda dapat membuat tumpukan keluar dari kendali adalah dengan rekursi tak terbatas (atau sangat dalam).
Ini hanya tumpukan. Maaf, tidak membaca pertanyaan Anda sepenuhnya pada awalnya.
Anda perlu menjalankan JVM dengan argumen baris perintah berikut.
-Xmx<ammount of memory>
Contoh:
-Xmx1024m
Itu akan memungkinkan maks 1GB memori untuk JVM.
-XX:MaxDirectMemorySize
. Bukannya saya sudah membuat banyak profil untuk memastikan tapi tetap;)
MaxDirectMemorySize
satunya yang memengaruhi buffer NIO. Semua jenis memori asli lainnya digunakan oleh JVM.
Jika Anda ingin membatasi memori untuk jvm (bukan ukuran heap) ulimit -v
Untuk mendapatkan gambaran tentang perbedaan antara jvm dan memori tumpukan, lihat artikel yang sangat bagus ini http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the- java-process.html
ulimit
perintah Linux? Saya melakukan pencarian Google cepat dan tidak melihat hubungan antara ulimit
dan JVM. Y
Jawaban di atas agak benar, Anda tidak dapat dengan anggun mengontrol berapa banyak memori asli yang dialokasikan oleh proses java. Tergantung pada apa aplikasi Anda lakukan.
Yang mengatakan, tergantung pada platform, Anda mungkin dapat menggunakan beberapa mekanisme, misalnya misalnya, untuk membatasi ukuran java atau proses lainnya.
Tapi jangan berharap itu gagal dengan anggun jika itu mencapai batas itu. Kegagalan alokasi memori asli jauh lebih sulit untuk ditangani daripada kegagalan alokasi pada heap java. Ada peluang yang cukup bagus untuk aplikasi tersebut macet tetapi tergantung pada seberapa kritisnya sistem untuk menjaga ukuran proses turun yang mungkin masih cocok untuk Anda.
NativeHeap dapat ditingkatkan dengan -XX: MaxDirectMemorySize = 256M (standarnya adalah 128)
Saya tidak pernah menggunakannya. Mungkin Anda akan merasakan manfaatnya.