Когда я запускаю java-программу с начальным размером кучи 3G (установленным аргументом VM -Xms3072m), JVM не начинается с этого размера. Он начинается с 400 м или около того, а затем продолжает приобретать больше памяти по мере необходимости.Как обеспечить запуск JVM со значением Xms
Это серьезная проблема для меня. Я знаю, что через некоторое время JVM понадобится. И когда JVM увеличивает свою память по мере необходимости, она замедляется. За время, когда JVM приобретает больше памяти, значительное количество времени тратится на сбор мусора. И я полагаю, что приобретение памяти - дорогостоящая задача.
Как обеспечить, чтобы JVM действительно учитывала параметр размера начальной кучи?
Обновление: Это приложение создает множество объектов, большинство из которых быстро умирают. Некоторые результирующие объекты должны оставаться в памяти (которые передаются из молодой кучи). Во время этой операции все эти объекты должны быть в памяти. После операции я вижу, что все объекты в молодой куче успешно заявлены. Таким образом, утечки памяти отсутствуют.
Такая же операция выполняется гладко, когда размер кучи достигает 3G. Это ясно указывает, что дополнительное время, затраченное на приобретение памяти.
Это Sun JDK 5.
Вы используете Sun JVM? –
Вопрос только в том, сколько основной памяти у вашей машины и сколько бесплатно при запуске вашей программы? – ReneS
Хост имеет память 32G. Хотя, «топ» показывает только несколько Gigs свободной памяти, программа java может удобно разместить 10G. –