JVM Thread & Memory Monitoring
JVM 위에서 실행되는 프로세스의 메모리 사용량 Monitoring 에 대해 정리한다.
우선 사용되는 툴에 대한 간략한 정리
JPS - Java Process Status, JVM에서 실행되고있는 프로세스의 목록을 확인할 수 있다.
JMAP - JVM에서 실행되고있는 프로세스의 메모리 사용량을 확인할 수 있다.
0. Monitoring 할 프로세스 ID 확인
1. 객체 별 메모리 사용량 확인
2. Heap 사용량 확인
* 주의점
3. Thread dump
Reference
[1] Spring Boot Memory Performance, https://spring.io/blog/2015/12/10/spring-boot-memory-performance
[2] JAVA Heap 메모리 모델, http://lyb1495.tistory.com/3
우선 사용되는 툴에 대한 간략한 정리
JPS - Java Process Status, JVM에서 실행되고있는 프로세스의 목록을 확인할 수 있다.
JMAP - JVM에서 실행되고있는 프로세스의 메모리 사용량을 확인할 수 있다.
0. Monitoring 할 프로세스 ID 확인
- jps 실행 후 이름을 보고 프로세스 ID를 확인한다.
- -l 옵션을 사용하면 패키지명까지 볼 수 있다. 이외에도 옵션이 있다.
1. 객체 별 메모리 사용량 확인
- jmap -histo [processID]
- 목록이 길 경우 파이프를 이용하면 유용하다.
- ex) jmap -histo 999 | head
- jmap -histo 999 | tail
- jmap -histo 999 | grep 'mypackage'
- jmap -histo 999 | grep 'mypackage' | head
2. Heap 사용량 확인
- jmap -heap [processID]
- Max, used, free 등을 space 별로 확인할 수 있다 [2].
* 주의점
- JMAP -heap 을 사용할 경우, 프로세스를 실행시킨 사용자와 같은 사용자가 아니면 프로세스에 attach 할 수 없다.
3. Thread dump
- jstack [processId]
- jstack을 실행하는 시점의 thread stack trace가 가능하다.
- 파일로 저장하여 확인하고자 한다면, shifter를 사용하면 간단하다.
- jstack [processId] >> thread.dump
Reference
[1] Spring Boot Memory Performance, https://spring.io/blog/2015/12/10/spring-boot-memory-performance
[2] JAVA Heap 메모리 모델, http://lyb1495.tistory.com/3
댓글
댓글 쓰기