|
|
Diposting pada 14/08/2017 16.49.22
|
|
|
|

Terjadi kesalahan selama inisialisasi VM Tidak dapat mencadangkan ruang yang cukup untuk tumpukan objek 3145728KB
Baru-baru ini mengerjakan program untuk Java. Awalnya, saya selalu menyukai manajemen memori Java, tidak perlu khawatir mengalokasikan memori, cukup alokasikan, pengumpul sampah akan merebut kembali memori untuk Anda. Sekarang program ini dikembangkan dengan sejumlah besar data, dan demi kecepatan, saya akan memuat semua informasi ke dalam memori, yang akan memastikan respons yang cepat. Saya masih berulang kali menghitung memori, memikirkan jumlah data saya sendiri, yang seharusnya cukup di awal (mesin saya memiliki memori 4G, meskipun Windows mengenali 3.5G, tetapi seharusnya baik-baik saja dibandingkan dengan volume data saya saat ini).
Tanpa diduga, program percobaan pertama berjalan selama beberapa jam dan menemukan Pengecualian Memori Kehabisan Memori. Melihat pengaturan VM saya sendiri, saya mengatur -Xms512M -Xmx1024M. Tanpa memikirkannya, saya langsung mengubahnya menjadi -Xms512M -Xmx2048M, dan hasilnya adalah saya tidak dapat memesan cukup ruang untuk tumpukan objek. Program tidak bisa bangun. Baru kemudian saya menyadari bahwa masih ada batasan memori maksimum aslinya. Saya mencari di Internet dan menemukan banyak artikel yang membahas masalah ini. Akhirnya, saya menemukan artikel yang paling berguna di forum DEV2DEV BEA
Di sini moderator YuLimin melakukan tes dan sampai pada kesimpulan:
Versi JVM perusahaan Memori maksimum (mega) klien Memori maksimum (mega) server
MATAHARI 1.5.x 1492 1520
MINGGU 1.5.5 (Linux) 2634 2660
MINGGU 1.4.2 1564 1564
SUN 1.4.2 (Linux) 1900 1260
IBM 1.4.2 (Linux) 2047 N / A
BEA JRockit 1.5 (U3) 1909 1902
Saya menggunakan JDK1.6.0_05 sekarang, mengujinya. Hal terbesar dalam status klien adalah JDK saya tidak mengenali parameter -Server dan tidak dapat menguji status server. Perkiraannya hampir sama.
MINGGU 1.6.0 1442 N/A
Tampaknya tidak mungkin menggunakan memori besar di Java. Dan pepatah umum adalah bahwa jika ingatannya terlalu besar, waktu pengumpulan sampah akan lama. Hal ini juga bisa dimengerti, umumnya dikumpulkan ketika memori tidak cukup, pemindaian memori 2G tentu saja jauh lebih lambat daripada 1G, dan ada lebih banyak objek memori, perkiraan hubungan meningkat secara eksponensial.
Terlampir di bawah ini adalah metode pengujian dan catatan pengujian YuLimin.
Metode pengujian:Uji dengan perintah java -XmxXXXXM -version di bawah baris perintah, dan kemudian secara bertahap meningkatkan nilai XXXX, jika dijalankan secara normal, itu berarti ukuran memori yang ditentukan tersedia, jika tidak, pesan kesalahan akan dicetak.
Uji memori maksimum yang didukung dari JVM, lalu atur variabel lingkungan pada sistem
Nama variabel: _JAVA_OPTIONS Nilai: - Xmx1G
|
Mantan:plugin layar penuh jQuery "jQuery Fullscreen Plugin" digunakanDepan:Perbedaan antara sertifikat SSL, OV, DV, dan EV
|