Alokasi memori heap awal JVM [duplikat]

Dec 07 2020

Saya telah menentukan nilai -Xms dan -Xmx sebagai kata yang sama 4GB. Sekarang ketika saya memulai aplikasi spring-boot saya, saya berasumsi bahwa OS akan mengalokasikan memori 4GB tepat setelah memulai aplikasi karena itu adalah nilai yang ditentukan menggunakan argumen -Xms. Tapi ketika saya cek Resident Set aplikasi dan juga heap memory (menggunakan JMX), saya bisa melihat memory yang dialokasikan masih kurang dari 1GB. Jadi apakah itu berarti OS tidak selalu mengalokasikan memori yang ditentukan menggunakan -Xms.

Terima kasih sebelumnya.

Jawaban

JurajMartinka Dec 07 2020 at 12:23

Anda tidak mengatakan OS yang mana dan vendor / versi JVM mana tetapi seringkali OS mengalokasikan halaman dengan malas, karena mereka tidak ada dalam RAM ("residen") kecuali diperlukan. Jika aplikasi Anda tidak benar-benar membutuhkan memori heap, itu tidak akan disimpan. Juga ada "kebijakan ukuran adaptif" yang mungkin menumpuk menyusut bahkan di bawah "-Xms" jika tingkat huniannya terlalu rendah:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html