2014-06-15 4 views
0

, 내가 JVM 옵션 -XX + PrintFlagsFinal으로 프로그램을 실행할 때, 나는 다음과 같이 인쇄 MaxHeapSize을 볼 수-XX : + PrintFlagsFinal 및 -XX : + PrintCommandLineFlags를 호출 할 때 MaxHeapSze의 출력이 다른 이유는 무엇입니까? 그냥 질문 같은

bool MaxFDLimit        = true   {product} 
uintx MaxGCMinorPauseMillis      = 4294967295  {product} 
uintx MaxGCPauseMillis       = 4294967295  {product} 
uintx MaxHeapFreeRatio       = 70    {product} 
**uintx MaxHeapSize        := 1044381696  {product}** 
intx MaxInlineLevel       = 9    {product} 
intx MaxInlineSize        = 35    {product} 
intx MaxJavaStackTraceDepth     = 1024   {product} 

동안 나는 JVM 옵션 -XX + PrintCommandLineFlags와 같은 프로그램을 실행할 때 MaxHeapSize를 다음과 같이 볼 수 있습니다.

-XX:InitialHeapSize=65192896 **-XX:MaxHeapSize=1043086336** -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC 

왜이 두 가지가 다른가요? 나는 그들이 같아야한다고 생각했다.

답변

2

정렬 및 인체 공학적 조정으로 인해 실제 힙 크기가 사용자가 명령 줄에서 지정한 것과 다를 수 있습니다. 기본적으로 힙은 2MB로 정렬됩니다 (see collectorPolicy.cpp).

1044381696은 2MB 맞춤 1043086336 이후의 최종 힙 크기입니다.

+0

감사합니다. 그러나 (1044381696-1043086336)는 2M이 아니라 약 1.23M입니다. 당신이 그것에 대해 어떻게 생각하십니까? – PixelsTech

+0

@ PixelsTech 1043086336은 2M 정렬되지 않습니다. 즉 X/(2 * 1024 * 1024) = 497.38 - 부분입니다. 2M의 가장 가까운 배수는 1044381696입니다. X/(2 * 1024 * 1024) = 498입니다. – apangin

+0

좋습니다. 답변 주셔서 감사합니다 – PixelsTech

관련 문제