#java #jvm
#java #jvm
Вопрос:
Когда вы запускаете JVM, ГДЕ выделяется генерация перманентности? Является ли это частью основной КУЧИ или дополнением к размеру КУЧИ.
например, если я использую следующие параметры:
-server -Xms10G -Xmx10G -XX:MaxPermSize=1536M
Будет ли общий размер Java составлять 6G 512M или 6,5 G для Java, или настройка генерации перманентности внутри КУЧИ означает, что все запущенные приложения будут иметь 6G — 512M = 5,5 МБ для молодых / постоянных пользователей (иначе СТАРЫХ) и Perm?
Это изображение в 4. Определение размеров поколений, похоже, подразумевает, что это может быть за пределами кучи, но, похоже, я не могу найти что-то, что указывает наверняка. http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html
Глядя на выходные данные jstat, может показаться, что они находятся за пределами основной КУЧИ, но это может быть именно так, как об этом сообщается.
[jboss@pts03-taps-03 ~]$ jstat -gccapacity PID
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC
85184.0 85184.0 85184.0 8512.0 8512.0 68160.0 10400576.0 10400576.0 10400576.0 10400576.0 21248.0 1572864.0 1387840.0 1387840.0 431 43
OGCMX = 10400576.0 (almost 10G OLD GEN)
NGCMX = 85184.0 (OGCMX NGCMX = very close to 10G NEW GEN)
PGCMX = 1572864.0 (1.5G PERM GEN)
Если возможно, пожалуйста, предоставьте ссылку на документацию, показывающую, что ваш случай соответствует действительности.
Ответ №1:
-server -Xms10G -Xmx10G -XX: максимальный размер = 1536M
Общий объем кучи и поколения перманентности составит 11,5 ГБ. Однако существуют другие области памяти, например, прямая память, которая может быть такой же большой. Другая область — это разделяемые библиотеки, которые в основном имеют фиксированный размер.
например, вы можете установить
-mx128m -XX:MaxPermSize = 1g
Если бы генерация перманента была внутри кучи, это не удалось бы.
Комментарии:
1. Вот отличная картинка, показывающая, что мне было нужно. 1.bp.blogspot.com/_rQklvZkZitQ/TAdedrUdJtI/AAAAAAAADdE /…