jps
- -l : 显示进程id,显示主类全名或jar路径
- -q : 显示进程id
- -m : 显示进程id, 显示JVM启动时传递给main()的参数
- -v : 显示进程id,显示JVM启动时显示指定的JVM参书
10544 sun.tools.jps.Jps -Dapplication.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.aarch64 -xms8m 1508 org.tanukisoftware.wrapper.WrapperSimpleApp -Dorg.tanukisoftware.wrapper.WrapperSimpleApp.maxStartMainWait=40 -Djava.library.path=../lib -Dwrapper.key=qqgJybRXHKr1Zc_g -Dwrapper.backend=pipe -Dwrapper.disable_console_input=TRUE -Dwrapper.pid=1318 -Dwrapper.version=3.5.35 -Dwrapper.native_library=wrapper -Dwrapper.arch=arm -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 1239 q-support.jar -xms3g -Xmx3g -Xmn1g 9739 1.1.5.210520_release_s_app_004.jar -xms8g -Xmx8g -Xmn1g 9595 1.1.5.210722_release_s_app_022.jar 3724 1.1.5.210712_release_s_app_009.jar
jinfo
- no options 输出所有的系统属性和参数
- -flag 打印指定名称的参数
- -flag [+|-] 打开或关闭参数
- -flag = 设置参数
- -flags 打印所有参数
- -sysprops 打印系统配置
# jinfo -flags 1239 Attaching to process ID 1239, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.232-b09 Non-default VM flags: -XX:CICompilerCount=4 -XX:InitialHeapSize=3221225472 -XX:MaxHeapSize=3221225472 -XX:MaxNewSize=1073741824 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=1073741824 -XX:OldSize=2147483648 -XX:+UseCompressedClasspointers -XX:+UseCompressedOops -XX:+UseParallelGC Command line: -xms3g -Xmx3g -Xmn1g
打开 GC日志 jinfo -flag +PrintGCDetails 1239
关闭 GC日志 jinfo -flag -PrintGCDetails 1239
-xms:初始堆大小,默认为物理内存的1/64(<1GB);默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增 大堆直到-Xmx的最大限制 -Xmx:最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -xms的最小限制 -Xmn:新生代的内存空间大小,注意:此处的大小是(eden+ 2 survivor space)。与jmap -heap中显示的New gen是不同 的。整个堆大小=新生代大小 + 老生代大小 + 永久代大小。 在保证堆大小不变的情况下,增大新生代后,将会减小老生代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。 -XX:SurvivorRatio:新生代中Eden区域与Survivor区域的容量比值,默认值为8。两个Survivor区与一个Eden区的比值为 2:8,一个Survivor区占整个年轻代的1/10。 -Xss:每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。应根据应用的线程所需内存大小 进行适当调整。在相同物理内存下, 减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。一般 小的应用, 如果栈不是很深, 应该是128k够用的, 大的应用建议使用256k。这个选项对性能影响比较大,需要严格的测试。和threadstacksize选项解释很类似,官方文档似乎没有 解释, 在论坛中有这样一句话:"-Xss ``is translated ``in a VM flag named ThreadStackSize”一般设置这个值就可以了。 -XX:PermSize:设置永久代(perm gen)初始值。默认值为物理内存的1/64。 -XX:MaxPermSize:设置持久代最大值。物理内存的1/4。
-class class loader的行为统计 jinfo -flag -PrintGC 11666 jinfo -flag -PrintGCDetails 11666 -compiler HotSpt JIT编译器行为统计 -gc 垃圾回收堆的行为统计 -gccapacity 各个垃圾回收代容量(young,old,perm)和他们相应的空间统计 -gcutil 垃圾回收统计概述 -gccause 垃圾收集统计概述(同-gcutil),附加最近两次垃圾回收事件的原因 -gcnew 新生代行为统计 -gcnewcapacity 新生代与其相应的内存空间的统计 -gcold 年老代和永生代行为统计 -gcoldcapacity 年老代行为统计 -printcompilation HotSpot编译方法统计每隔1000毫秒打印一次,打印3次
# jstat -gcutil 1239 1000 3 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 55.95 0.00 24.48 1.61 95.97 93.67 6 0.132 3 0.250 0.382 55.95 0.00 24.48 1.61 95.97 93.67 6 0.132 3 0.250 0.382 55.95 0.00 24.48 1.61 95.97 93.67 6 0.132 3 0.250 0.382S0 survivor0使用百分比 S1 survivor1使用百分比 E Eden区使用百分比 O 老年代使用百分比 M 元数据区使用百分比 CCS 压缩使用百分比 YGC 年轻代垃圾回收次数 YGCT 年轻代垃圾回收消耗时间 FGC Full GC垃圾回收次数 FGCT Full GC垃圾回收消耗时间 GCT 垃圾回收消耗总时间
==========================================================分割线====================================================================
jstack
jstack是用来查看JVM线程快照的命令,线程快照是当前JVM线程正在执行的方法堆栈集合。使用jstack命令可以定位线程出现长时间卡顿的原因,例如死锁,死循环等。-F 当使用jstack 无响应时,强制输出线程堆栈。 -m 同时输出java堆栈和c/c++堆栈信息(混合模式) -l 除了输出堆栈信息外,还显示关于锁的附加信息
jmap
jmap可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及finalizer 队列-heap 打印java heap摘要 -histo[:live] 打印堆中的java对象统计信息 -clstats 打印类加载器统计信息 -finalizerinfo 打印在f-queue中等待执行finalizer方法的对象 -dump: 生成java堆的dump文件 dump-options: live 只转储存活的对象,如果没有指定则转储所有对象 format=b 二进制格式 file= 转储文件到
这个命令是要把java堆中的存活对象信息转储到dump.bin文件
# jmap -dump:live,format=b,file=dump.bin 1239
Dumping heap to /root/dump.bin ...
Heap dump file created
jhat
jhat是用来分析jmap生成dump文件的命令,jhat内置了应用服务器,可以通过网页查看dump文件分析结果,jhat一般是用在离线分析上。-stack false: 关闭对象分配调用堆栈的跟踪 -refs false: 关闭对象引用的跟踪 -port : HTTP服务器端口,默认是7000 -debug : debug级别 -version 分析报告版本
jhat /root/dump.bin
Reading from /root/dump.bin...
Dump file created Fri Jul 23 16:20:40 CST 2021
Snapshot read, resolving...
Resolving 598579 objects...
Chasing references, expect 119 dots.......................................................................................................................
Eliminating duplicate references.......................................................................................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。