반응형

 

참고 : https://programmer.ink/think/jvm-series-jvm-tuning-jps-jstat-jmap-jhat-jstack-jinfo.html

 

jvm series: jvm tuning - jps jstat jmap jhat jstack jinfo

jvm series: jvm tuning - jps jstat jmap jhat jstack jinfo Posted by Emma on Sun, 02 Jun 2019 21:01:42 +0200 From: https://www.cnblogs.com/ityouknow/p/5714703.html Using the command of JVM can help us locate the problem easily in production monitoring and p

programmer.ink

 

1. JMAP 

 

힙 메모리 보기

$>  jmap -heap [pid]

 

덤프 생성

$> jmap -dump:live,file=[생성할 파일경로및파일명] [pid]

 

생성된 덤프를 바로 웹으로 보고 싶다면

$> jhat -J-Xmx[메모리사이즈:덤프크기보다 크게] -port [사용할포트] [생성한 파일경로및파일명]

-> ex> jhat -J-Xmx2g -port 10000 /tmp/dump.bin

 

자바 jmap으로 heap 메모리 분석(jmap -heap pid) 수행시 오류 발생 할때

 

Heap Usage:
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.tools.jmap.JMap.runTool(JMap.java:201)
        at sun.tools.jmap.JMap.main(JMap.java:130)
Caused by: java.lang.RuntimeException: unknown CollectedHeap type : class sun.jvm.hotspot.gc_interface.CollectedHeap
        at sun.jvm.hotspot.tools.HeapSummary.run(HeapSummary.java:157)
        at sun.jvm.hotspot.tools.Tool.startInternal(Tool.java:260)
        at sun.jvm.hotspot.tools.Tool.start(Tool.java:223)
        at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
        at sun.jvm.hotspot.tools.HeapSummary.main(HeapSummary.java:50)
        ... 6 more

 

아래와 같이 설치가 가능함(아래는 java 1.8임)

yum --enablerepo='*-debug*' install java-1.8.0-openjdk-debuginfo.x86_64

 

위 명령 수행시 오류 날때는 버전이 맞지 않아서 임

 

아래에서 버전 확인 뒤

http://debuginfo.centos.org/7/x86_64/

 

Index of /7/x86_64

 

debuginfo.centos.org

 

wget 명령을 통해 위의 다운로드 주소 붙여넣고

 

rpm -ivh 파일명 을 통해 설치

 

2. 메모리 튜닝

 

https://nozaki.me/roller/kyle/entry/memory-usage-tuning-of-java8

 

java 다음에 옵션 추가

 

예) java -Xms256m -Xmx512m -XX:MaxDirectMemorySize=512M  -XX:MaxMetaspaceSize=512m -XX:CompressedClassSpaceSize=256M -XX:ReservedCodeCacheSize=256M

 

3. jstat (메모리 모니터링)

 

프로세스의 메모리 상태 보기

 

$> jstat [옵션] [pid] [ms] [반복회수 : 없으면 무한]

ex> jstat -gc 10222 1000

=> pid 10222에 대해 1초에 한번 프로세스 메모리 상태를 조회

 

아래 URL을 통해 GUI 값으로 확인 가능

http://nix-on.blogspot.com/2015/01/java-jstat-how-to-visualize-garbage.html

 

Java jstat - how to visualize garbage collection statistics quickly

jstat Garbage Collection visualizer jstat  is useful for getting a quick overview of the...

nix-on.blogspot.com

 

[옵션]

class : 클래스 로더의 동작에 관한 통계

compiler : 핫스팟 Just-In-Time 컴파일러 동작에 관한 통계

gc : 가비지 컬렉트된 Heap 동작에 관한 통계

gcapacity : 세대 마다 용량과 대응하는 영역에 관한 통계

gccause : gcutil의 직전 및 현재의 가비지 컬렉션 이벤트의 원인

gcnew : New 세대의 동작에 관한 통계

gcnewcapacity : New 세대의 사이즈와 대응하는 영역에 관한 통계

gcold : old 세대 및 Permanent 세대의 동작에 관한 통계

gcoldcapacity : Old 세대의 사이즈에 관한 통계

gcpermcapacity : Permanent 세대의 사이즈에 관한 통계

gcutil : 가비지 컬렉션 통계

printompilation : 핫스팟 컴파일 방법의 통계

 

 

 

4. 번외로 시스템 io 체크

 

iostat -x [인터벌] [회수]

$> iostat -x 1 10 

반응형

+ Recent posts