2011-05-11 3 views
0

Когда вы запускаете JVM, ГДЕ ЕСТЬ PERM GEN? Является ли он частью основного HEAP или он в дополнение к размеру HEAP.Где находится поколение Java PERM?

, например, если я использую следующие параметры:

-server -Xms10G -Xmx10G -XX:MaxPermSize=1536M 

Является ли общий размер Java будет 6G + 512M или 6.5g для Java или установка поколения завивка внутри НЕАР смысле, что все работающее приложение будет иметь 6G - 512M = 5.5MB для молодых/пожилых (иначе OLD) и Perm?

Эта графика представлена ​​на рисунке 4. «Калибровка по поколениям» подразумевает, что она может быть вне HEAP, но я не могу найти некоторых, которые утверждают, что это точно. http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html

Глядя на выход из jstat, похоже, что это будет снаружи основного HEAP, но это может быть именно так, как сообщается.

[[email protected] ~]$ 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) 

Если возможно, укажите ссылку на документацию, показывающую, что случай является истинным.

ответ

2

-server -Xms10G -Xmx10G -XX: MaxPermSize = 1536M

Общая кучи и завивки ген будет 11,5 ГБ. Однако существуют другие области памяти, например. прямая память, которая может быть такой же большой. Другая область - это общие библиотеки, которые в основном являются фиксированными.

например. Вы можете установить

-mx128m -XX: MaxPermSize = 1g

Если завивка ген был insize кучи это было бы ошибкой.

+1

Вот отличная картина, показывающая, что мне нужно. http://1.bp.blogspot.com/_rQklvZkZitQ/TAdedrUdJtI/AAAAAAAADdE/1I6SqKELZhc/s1600/JavaMemory.png – jrhickey

+0

Интересно, можете ли вы установить 1g или должно быть 1024 м – carbonr

Смежные вопросы