다음 판
|
이전 판
|
wiki:java:analysis [2022/07/08 22:07] dhan 만듦 |
wiki:java:analysis [2023/01/13 18:44] (현재) |
| ====== 주제 ====== |
| <WRAP left notice 80%> |
| * description : 자바 프로그램 분석 방법 기술, 힙영역 분석, 쓰레드 분석 |
| * author : 주레피 |
| * email : dhan@repia.com |
| * lastupdate : 2022-07-10 |
| </WRAP> |
| |
| ===== Intro ===== |
| |
| ===== Case Study ===== |
| |
| ===== Tools ===== |
| ==== jps ==== |
| JVM 프로세스 목록을 확인할 수 있음 |
| <code bash> |
| $> jps -v |
| 32128 Jps -Dapplication.home=/PROJECT/dge.repia.com/SearchApp/jdk1.8.0_202 -Xms8m |
| 5287 Server |
| 24487 Bootstrap -Djava.util.logging.config.file=/WAS_APPS/tomcat-instance/kigam.repia.com/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+DisableExplicitGC -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Denv=product -Denv.servername=kigam.repia.com -Dignore.endorsed.dirs= -Dcatalina.base=/WAS_APPS/tomcat-instance/kigam.repia.com -Dcatalina.home=/WAS_APPS/apache-tomcat-8.5.76 -Djava.io.tmpdir=/WAS_APPS/tomcat-instance/kigam.repia.com/temp |
| 22156 Bootstrap -Djava.util.logging.config.file=/WAS_APPS/tomcat-instance/dge.repia.com/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+DisableExplicitGC -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Denv=product -Denv.servername=dge.repia.com -Dignore.endorsed.dirs= -Dcatalina.base=/WAS_APPS/tomcat-instance/dge.repia.com -Dcatalina.home=/WAS_APPS/apache-tomcat-8.5.76 -Djava.io.tmpdir=/WAS_APPS/tomcat-instance/dge.repia.com/temp |
| 26732 Server |
| 27185 jar |
| 14770 Server |
| 26132 jar |
| 18037 Server |
| 20021 jar |
| 25242 Bootstrap -Djava.util.logging.config.file=/usr/local/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -Dcatalina.base=/usr/local/tomcat8 -Dcatalina.home=/usr/local/tomcat8 -Djava.io.tmpdir=/usr/local/tomcat8/temp |
| 32412 jar |
| 11933 jar |
| 26878 Bootstrap -Djava.util.logging.config.file=/WAS_APPS/tomcat-instance/centos79.repia.com/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+DisableExplicitGC -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Denv=product -Denv.servername=centos79.repia.com -Dignore.endorsed.dirs= -Dcatalina.base=/WAS_APPS/tomcat-instance/centos79.repia.com -Dcatalina.home=/WAS_APPS/apache-tomcat-8.5.76 -Djava.io.tmpdir=/WAS_APPS/tomcat-instance/centos79.repia.com/temp |
| </code> |
| |
| ==== jmap ==== |
| 현재 실행 중인 JVM 프로세스의 메모리 맵(map)을 확인할 수 있음 \\ |
| JVM의 힙 메모리 정보를 얻어오거나 덤프를 떠서 분석해 볼 수 있다. |
| |
| <code bash> |
| $> jmap -heap 200021 |
| [root@sofo dump]# /PROJECT/dge.repia.com/SearchApp/java8/bin/jmap -heap 20021 |
| Attaching to process ID 20021, please wait... |
| Debugger attached successfully. |
| Server compiler detected. |
| JVM version is 25.202-b08 |
| |
| using thread-local object allocation. |
| Parallel GC with 8 thread(s) |
| |
| Heap Configuration: |
| MinHeapFreeRatio = 0 |
| MaxHeapFreeRatio = 100 |
| MaxHeapSize = 2009071616 (1916.0MB) |
| NewSize = 41943040 (40.0MB) |
| MaxNewSize = 669515776 (638.5MB) |
| OldSize = 83886080 (80.0MB) |
| NewRatio = 2 |
| SurvivorRatio = 8 |
| MetaspaceSize = 21807104 (20.796875MB) |
| CompressedClassSpaceSize = 1073741824 (1024.0MB) |
| MaxMetaspaceSize = 17592186044415 MB |
| G1HeapRegionSize = 0 (0.0MB) |
| |
| Heap Usage: |
| PS Young Generation |
| Eden Space: |
| capacity = 125829120 (120.0MB) |
| used = 41686504 (39.755348205566406MB) |
| free = 84142616 (80.2446517944336MB) |
| 33.12945683797201% used |
| From Space: |
| capacity = 5242880 (5.0MB) |
| used = 5231912 (4.989540100097656MB) |
| free = 10968 (0.01045989990234375MB) |
| 99.79080200195312% used |
| To Space: |
| capacity = 5242880 (5.0MB) |
| used = 0 (0.0MB) |
| free = 5242880 (5.0MB) |
| 0.0% used |
| PS Old Generation |
| capacity = 83886080 (80.0MB) |
| used = 6313904 (6.0214080810546875MB) |
| free = 77572176 (73.97859191894531MB) |
| 7.526760101318359% used |
| |
| 1711 interned Strings occupying 144344 bytes. |
| |
| // JVM 메모리 통계 |
| $> jmap -F -histo 20021 |
| |
| // 메모리 덤프 |
| $> jmap -F -dump:format=b,file=heap.hprof 20021 |
| |
| ==== jhat ==== |
| 메모리 덤프 파일 분석 |
| <code bash> |
| $> jhat heap.hprof -port 7000 |
| </code> |
| |
| ===== Term ===== |
| |
| ===== Tip ===== |
| |
| ===== Troubleshooting ===== |
| |
| |
===== Ref ===== | ===== Ref ===== |
* [[https://hbase.tistory.com/180|[Java] 자바 메모리 덤프 분석 - jps, jmap, jhat 사용법 및 예제]] | * [[https://hbase.tistory.com/180|[Java] 자바 메모리 덤프 분석 - jps, jmap, jhat 사용법 및 예제]] |
| * [[https://steady-coding.tistory.com/591|[Java] Heap 모니터링 & Heap Dump 분석하기]] |
| * [[https://ijbgo.tistory.com/33|Thread Dump 분석]] |
| * [[https://blog.heaphero.io/2017/10/13/how-to-capture-java-heap-dumps-7-options/|HOW TO CAPTURE JAVA HEAP DUMPS? – 7 OPTIONS]] |
| |
| {{tag>heapdump tda 주레피 메모리덤프 visualvm TDA}} |
| |