Первоначальное выделение памяти в куче JVM [дубликат]
Я указал значения -Xms и -Xmx как то же самое, скажем, 4 ГБ. Теперь, когда я запускаю приложение с весенней загрузкой, я предполагал, что ОС выделит 4 ГБ памяти сразу после запуска приложения, поскольку это значение указано с помощью аргумента -Xms. Но когда я проверил резидентный набор приложения, а также кучную память (с использованием JMX), я увидел, что выделенная память все еще меньше 1 ГБ. Значит ли это, что ОС не обязательно выделяет память, указанную с помощью -Xms.
Заранее спасибо.
Ответы
Вы не сказали, какая ОС и какой производитель / версия JVM, но часто ОС распределяет страницы лениво, то есть они не находятся в ОЗУ («резидентные»), если в этом нет необходимости. Если вашему приложению действительно не нужна эта кучная память, она не будет резидентной. Также существует «политика адаптивного размера», которая может сжимать кучу даже ниже «-Xms», если ее заполняемость слишком мала:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html