원시 힙 사용량
원시 힙 사용량은 대개 안정 레벨까지 올라간 후 해당 레벨 정도에서 유지됩니다. 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와 연관된 세부적인 메시지를 사용할 수 있습니다. 관련 오류와 연관된 메시지에서 문제점이 원시 힙 소모임을 알 수 있습니다.