JVM常用指令

Jmap

 查询堆信息 :jmap -heap pid

C:\Users\41732>jmap -heap 9780
Attaching to process ID 9780, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.152-b16

using thread-local object allocation.
Parallel GC with 4 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 0
   MaxHeapFreeRatio         = 100
   MaxHeapSize              = 4267704320 (4070.0M
   NewSize                  = 89128960 (85.0MB)
   MaxNewSize               = 1422393344 (1356.5M
   OldSize                  = 179306496 (171.0MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875
   CompressedClassSpaceSize = 1073741824 (1024.0M
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 65536000 (62.5MB)
   used     = 36124952 (34.451438903808594MB)
   free     = 29411048 (28.048561096191406MB)
   55.12230224609375% used
From Space:
   capacity = 14680064 (14.0MB)
   used     = 4598376 (4.385353088378906MB)
   free     = 10081688 (9.614646911621094MB)
   31.323950631277903% used
To Space:
   capacity = 14680064 (14.0MB)
   used     = 0 (0.0MB)
   free     = 14680064 (14.0MB)
   0.0% used
PS Old Generation
   capacity = 110100480 (105.0MB)
   used     = 13078136 (12.472282409667969MB)
   free     = 97022344 (92.52771759033203MB)
   11.87836419968378% used

15044 interned Strings occupying 2001648 bytes.

查看当前实例个数:jmap -histo pid

 num     #instances         #bytes  class name
----------------------------------------------
   1:        123030       17393624  [C
   2:         42214       13424608  [B
   3:         10861        4126040  [I
   4:         23535        2071080  java.lang.reflect.Method
   5:         70927        1702248  java.lang.String
   6:         22263        1075592  [Ljava.lang.Object;
   7:         37505         779912  [Ljava.lang.Class;
   8:          7161         629160  [Ljava.util.HashMap$Node;
   9:         12558         602784  java.util.HashMap
  10:          5286         592496  java.lang.Class
  11:         16836         538752  java.util.HashMap$Node
  12:          9808         470784  org.springframework.core.ResolvableType
  13:         12865         411680  java.util.ArrayList$Itr
  14:         11799         377568  java.util.concurrent.ConcurrentHashMap$Node
  15:          9108         364320  java.util.LinkedHashMap$Entry
  16:          7767         310680  java.util.HashMap$KeyIterator
  17:         11649         279576  java.lang.StringBuilder
  18:          3441         271808  [S
  19:          4577         256312  java.util.LinkedHashMap
  20:          7391         236512  java.lang.ref.WeakReference
  21:          3863         223792  [Ljava.lang.reflect.Method;
  22:          2952         212544  java.lang.reflect.Field
  23:          5122         195728  [Ljava.lang.String;
  24:          7907         189768  java.util.ArrayList
  25:          1868         189736  [Z
  26:          7011         168264  java.util.Collections$UnmodifiableCollection$1
  27:           144         156784  [Ljava.util.concurrent.ConcurrentHashMap$Node;
  28:          3869         154760  java.lang.ref.SoftReference
  • num:序号
  • instances:实例数量
  • bytes:占用空间大小
  • class name:类名称,[C is a char[],[S is a short[],[I is a int[],[B is a byte[],[[I is a int[][]

查看总大小排名前30的对象,3是按第三列排序

jmap -histo  92406 | sort -n -r -k 3 | head -30

查看与某某相关的对象

jmap -histo  92406 |grep xxx

导出内存影像:jmap dump:format=b,file=fileName pid

C:\Users\41732>jmap -dump:format=b,file=eureka.hprof 9780
Dumping heap to C:\Users\41732\eureka.hprof ...
Heap dump file created

C:\Users\41732>

Jinfo

查看jvm参数

C:\Users\41732>jinfo -flags 9780
Attaching to process ID 9780, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.152-b16
Non-default VM flags: -XX:-BytecodeVerificationLocal -XX:-BytecodeVerificationRemote -XX:CICompilerCount=3 -XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4267704320 -XX:MaxNewSize=1422393344 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=891289
60 -XX:OldSize=179306496 -XX:TieredStopAtLevel=1 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
Command line:  -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:50964,suspend=y,server=n -XX:TieredStopAtLevel=1 -Xverify:none -Dspring.output.ansi.enabled=always -javaagent:C:\Users\41732\AppData\Local\JetBrains\IntelliJIdea2020.3\c
aptureAgent\debugger-agent.jar -Dfile.encoding=UTF-8

C:\Users\41732>

Jstack

分析cpu飙高的原因

1. 找出cpu高的线程

top -p pid  -H  # -H表示只打印一次

2. 导出线程线程的栈信息

C:\Users\41732>jstack 9780  > aa.text

3. 在导出的栈信息中分析该线程正在执行的状态

   注意:top -p 输出的线程号是10进制,而jstack导出的文件线程号是16进制,需要转换。

jstack 19332 | grep -10 4b8f
"http-nio-8080-ClientPoller-0" #20 daemon prio=5 os_prio=0 tid=0x000000001f6a8000 nid=0x1fb8 runnable [0x0000000020cee000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
	at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
	at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
	at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x000000076d2a11e0> (a sun.nio.ch.Util$3)
	- locked <0x000000076d2a11d0> (a java.util.Collections$UnmodifiableSet)
	- locked <0x000000076d2a1080> (a sun.nio.ch.WindowsSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1052)
	at java.lang.Thread.run(Thread.java:748)

"NioBlockingSelector.BlockPoller-1" #19 daemon prio=5 os_prio=0 tid=0x000000001f680000 nid=0x3c8 runnable [0x0000000020bef000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
	at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
	at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
	at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x000000076d061bc8> (a sun.nio.ch.Util$3)
	- locked <0x000000076d060b20> (a java.util.Collections$UnmodifiableSet)
	- locked <0x000000076d05cdd0> (a sun.nio.ch.WindowsSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at org.apache.tomcat.util.net.NioBlockingSelector$BlockPoller.run(NioBlockingSelector.java:342)

Cpu飙升的原因

  1. 线程死锁
  2. 线程内部有死循环
  3. 程序重有高频率的计算
  4. IO读写太高
  5. 频繁的发生GC
  6. 并发运行中的线程数太多

Jstat

 打印GC信息

C:\Users\41732>jstat  -gc  9780 1000 10
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
14336.0 14336.0 4490.6  0.0   64000.0  35918.3   107520.0   12771.6   24448.0 23677.6 3200.0 2998.1      6    0.039   1      0.033    0.073
14336.0 14336.0 4490.6  0.0   64000.0  35918.3   107520.0   12771.6   24448.0 23677.6 3200.0 2998.1      6    0.039   1      0.033    0.073
14336.0 14336.0 4490.6  0.0   64000.0  35918.3   107520.0   12771.6   24448.0 23677.6 3200.0 2998.1      6    0.039   1      0.033    0.073
14336.0 14336.0 4490.6  0.0   64000.0  35918.3   107520.0   12771.6   24448.0 23677.6 3200.0 2998.1      6    0.039   1      0.033    0.073
14336.0 14336.0 4490.6  0.0   64000.0  35918.3   107520.0   12771.6   24448.0 23677.6 3200.0 2998.1      6    0.039   1      0.033    0.073
14336.0 14336.0 4490.6  0.0   64000.0  35918.3   107520.0   12771.6   24448.0 23677.6 3200.0 2998.1      6    0.039   1      0.033    0.073
14336.0 14336.0 4490.6  0.0   64000.0  35918.3   107520.0   12771.6   24448.0 23677.6 3200.0 2998.1      6    0.039   1      0.033    0.073
14336.0 14336.0 4490.6  0.0   64000.0  35918.3   107520.0   12771.6   24448.0 23677.6 3200.0 2998.1      6    0.039   1      0.033    0.073
14336.0 14336.0 4490.6  0.0   64000.0  35918.3   107520.0   12771.6   24448.0 23677.6 3200.0 2998.1      6    0.039   1      0.033    0.073
14336.0 14336.0 4490.6  0.0   64000.0  35918.3   107520.0   12771.6   24448.0 23677.6 3200.0 2998.1      6    0.039   1      0.033    0.073

C:\Users\41732>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

季风泯灭的季节

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值