jds命令
#jps -v #输出jvm参数
#jps -p #
#jps -q #仅仅显示java进程号
#jps –l #输出主类或者jar的完全路径名
jstack(java线程分析工具)
sudo jstack -F 进程ID #查看jvm中所有线程的运行情况和当前状态:
sudo jstat -gc pid 1000 10 每秒查看一次gc信息,共10次
jmap(java内存分析工具)
jmap -heap 31552 #打印heap的概要信息,GC使用的算法,heap的配置和使用情况,可以用此来判断内存目前的使用情况以及垃圾回收情况。
jmap -finalizerinfo 129665 # 打印等待回收的对象信息。
[root@666test logs]# jmap -finalizerinfo 31552
Attaching to process ID 31552, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.151-b12
Number of objects pending for finalization: 0
说明:Number of objects pending for finalization:0 说明当前F-Queue队列中并没有等待Finalizer线程执行finalizer方法的对象。
[root@666test logs]# jmap -clstats 31552
Attaching to process ID 31552, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.151-b12
示例:打印Java类加载器的智能统计信息,对于每个类加载器而言,对于每个类加载器而言,它的名称,活跃度,地址,父类加载器,它所加载的类的数量和大小都会被打印。此外,包含的字符串数量和大小也会被打印。
#jmap -F -histo 31552 | grep com.netflix #强制模式。如果指定的pid没有响应,请使用jmap -dump或jmap -histo选项。此模式下,不支持live子选项。
执行 jmap -histo 30996 | head -n 20 看下内存中创建类top20的情况
[root@666test sh]# jmap -histo 31552|head -n 20
num #instances #bytes class name
----------------------------------------------
1: 760598 97626088 [C
2: 12784 22697176 [I
3: 627019 20064608 java.util.HashMap$Node
4: 257545 17292904 [Ljava.util.HashMap$Node;
5: 550275 13206600 java.lang.String
6: 263048 12626304 java.util.HashMap
7: 41660 10537392 [Ljava.lang.Object;
8: 73059 5844720 java.util.zip.ZipEntry
9: 11378 5197272 [B
10: 74647 4777408 java.net.URL
11: 68622 4391808 io.github.lukehutch.fastclasspathscanner.scanner.ClassInfo
12: 73053 3506544 io.github.lukehutch.fastclasspathscanner.scanner.ClasspathElementZip$1
13: 182550 2920800 java.util.HashSet
14: 4212 2763072 io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueue
15: 28447 2503336 org.apache.logging.log4j.core.impl.Log4jLogEvent
16: 48755 1560160 java.util.concurrent.ConcurrentHashMap$Node
17: 12022 1333176 java.lang.Class
获取保存dump文件
jmap -dump:format=b,file=/sh/1206213.dump 120623 #获取保存dump文件