원시 힙 사용량

원시 힙 사용량은 대개 안정 레벨까지 올라간 후 해당 레벨 정도에서 유지됩니다. svmon 출력에서 '사용 중'인 페이지 수를 관찰하여 원시 힙에 커미트된 메모리 양을 모니터할 수 있습니다.

하지만 JIT 컴파일 코드가 malloc()이 있는 원시 힙에 할당되므로, 거의 사용되지 않은 메소드가 임계값에 도달하여 JIT 컴파일을 수행하면 원시 힙 사용량이 서서히 증가할 수 있습니다.

해당 동작이 메모리 누수와 혼동되지 않도록 코드에 대한 JIT 컴파일을 모니터할 수 있습니다. 이를 수행하려면 명령행 옵션 -Xjit:verbose={compileStart|compileEnd}와 함께 실행하십시오. 이 명령을 사용하면 각 메소드 이름을 컴파일하는 중에는 stderr로 인쇄되고, 컴파일을 완료하면 컴파일된 코드가 저장된 메모리 내의 위치로 인쇄됩니다.
(warm) Compiling java/lang/System.getEncoding(I)Ljava/lang/String; 
+ (warm) java/lang/System.getEncoding(I)Ljava/lang/String; @ 0x02BA0028-0x02BA0113   
                                        (2) Compiling java/lang/String.hashCode()I 
+ (warm) java/lang/String.hashCode()I @ 0x02BA0150-0x02BA0229   
  (2) Compiling java/util/HashMap.put(Ljava/lang/Object;Ljava/lang/Object;)
   Ljava/lang/Object; 
+ (warm) java/util/HashMap.put(Ljava/lang/Object;Ljava/lang/Object;)
                 Ljava/lang/Object; @ 0x02BA0270-0x02BA03F7   
                (2) Compiling java/lang/String.charAt(I)C 
+ (warm) java/lang/String.charAt(I)C @ 0x02BA0430-0x02BA04AC   
       (2) Compiling java/util/Locale.toLowerCase(Ljava/lang/String;)
                Ljava/lang/String; 
+ (warm) java/util/Locale.toLowerCase(Ljava/lang/String;)Ljava/lang/String; 
                                                    @ 0x02BA04D0-0x02BA064C

사용 중인 원시 힙의 양을 모니터할 때 Java™ 힙의 크기를 변경하여 사용 가능한 최대 원시 힙을 늘리거나 줄일 수 있습니다. Java힙에서 사용하지 않는 프로세스 주소 공간을 원시 힙 사용에 사용할 수 있기 때문에 힙 간 이 관계가 발생합니다.

원시 자원을 할당하는 데 실패하거나 프로세스 주소 공간이 소모되는 경우와 관련된 오류가 프로세스에 생성되는 경우 원시 힙을 늘려야 합니다. 이러한 오류에서는 JVM 내부 오류 메시지의 양식 또는 OutOfMemoryError와 연관된 세부적인 메시지를 사용할 수 있습니다. 관련 오류와 연관된 메시지에서 문제점이 원시 힙 소모임을 알 수 있습니다.