一、jinfo(Configuration Info for Java)

1、功能:jinfo可以实时地查看和调整虚拟机的各项参数。

2、参数:

选项 作用
-flag name 打印改名字的VM设置
-flag +|- name 是否打印某个VM设置
-flag name=value 设置某个VM设置为某个值
-sysprops 打印系统中所有Java设置
-flags 打印所有VM设置
打印所有的VM和系统的Java设置

3、例子

$ jinfo -flags 8472
VM Flags:
-XX:CICompilerCount=4 -XX:ConcGCThreads=2 -XX:G1ConcRefinementThreads=8 -XX:G1HeapRegionSize=1048576 -XX:InitialHeapSize=268435456 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=734003200 -XX:MaxNewSize=440401920 -XX:MinHeapDeltaBytes=1048576 -XX:NonNMethodCodeHeapSize=5835340 -XX:NonProfiledCodeHeapSize=122911450 -XX:ProfiledCodeHeapSize=122911450 -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation # 截取片断
$ jinfo -sysprops 8472
Java System Properties:
#Sat Jul 28 15:29:42 CST 2018
sun.desktop=windows
awt.toolkit=sun.awt.windows.WToolkit
java.specification.version=10
file.encoding.pkg=sun.io
sun.cpu.isalist=amd64
sun.jnu.encoding=GBK
java.class.path=D\:/software/IntelliJ IDEA 2018.1.1/lib/jps-launcher.jar;E\:/develop/software/java10/jdk/lib/tools.jar;D\:/software/IntelliJ IDEA 2018.1.1/lib/optimizedFileManager.jar
java.vm.vendor="Oracle Corporation"
jdt.compiler.useSingleThread=true
sun.arch.data.model=64
kotlin.incremental.compilation=true
user.variant=
kotlin.daemon.client.alive.path="C\:\\Users\\HBKJ\\AppData\\Local\\Temp\\kotlin-idea-4911978126183262642-is-running"
java.vendor.url=http\://java.oracle.com/

二、jstat(JVM Statistics Monitoring Tool)

1、功能:jstat用于监视JVM各种运行状态信息的命令行工具。可以显示本地或远程JVM进程中的类装载、内存、垃圾收集、JIT编译等运行数据。

2、参数:

选项 作用
-class 监视类加载、卸载数量、总空间以及类状态所耗费的时间
-gc 监视Java Heap状态,包含Eden、S0、S1、Old、MetaSpace等容量、已用空间、GC耗费时间合计等信息
-gcutil 与gc类似,关注已使用空间占总空间的占比
-gccause 与gcutil类似,额外输出导致上次GC的原因
-gcnew 监视新生代GC的状况
-gcold 监视老年代GC的状况
-gccapacity 与gc类似,关注Java堆各个区域使用到的最大和最小空间
-gcnewcapacity 与gcnew类似,关注新生代使用到的最大和最小空间
-gcoldcapacity 与gcold类似,关注老年代使用到的最大和最小空间
-gcmetacapacity 与gc类似,关注MetaSpace使用到的最大和最小空间
-compiler 输出JIT编译器编译过的方法、耗时等信息
-printcompilation 输出已经被JIT编译的方法

3、例子

$ jstat -gcnew 8472 1000 3
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
0.0 2048.0 0.0 2048.0 15 15 3584.0 97280.0 9216.0 3 0.009
0.0 2048.0 0.0 2048.0 15 15 3584.0 97280.0 9216.0 3 0.009
0.0 2048.0 0.0 2048.0 15 15 3584.0 97280.0 9216.0 3 0.009 $ jstat -gcnewcapacity 8472 1000 1
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
0.0 716800.0 99328.0 0.0 0.0 716800.0 2048.0 716800.0 97280.0 3 0 $ jstat -gccause 8472 1000 1
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC
0.00 100.00 9.47 17.63 97.47 92.84 3 0.009 0 0.000 0.009 Metadata GC Threshold No GC $ jstat -gcutil 8472 1000 1
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 100.00 9.47 17.63 97.47 92.84 3 0.009 0 0.000 0.009 $ jstat -class 8472 1000 1
Loaded Bytes Unloaded Bytes Time
3622 7032.7 0 0.0 1.22
3622 7032.7 0 0.0 1.22 $ jstat -compiler 8472 1000 1
Compiled Failed Invalid Time FailedType FailedMethod
1640 1 0 1.63 1 java/util/concurrent/ConcurrentHashMap putVal $ jstat -printcompilation 8472 1000 1
Compiled Size Type Method
1640 49 1 io/netty/util/internal/shaded/org/jctools/queues/atomic/BaseLinkedAtomicQueue isEmpty

三、jmap(Memory Map for Java)

1、功能:jmap用于生成堆转储快照(headdump或dump文件)。

2、生成dump文件的方法

  • jmap
  • -XX:HeapDumpOnOutOfMemoryError,JVM发生OOM异常自动生成
  • -XX:HeapDumpOnCtrlBreak参数,运行期间 Ctrl+Break 生成
  • Linux系统下通过kill -3 生成

3、选项

选项 作用
-clstats 打印类加载器的状态
-finalizerinfo 打印在F-Queue等待Finalizer线程执行finalize方法的对象
-histo[:live] 打印堆中对象统计信息,如类、实例数量和合计容量
-dump 显示堆详细信息,如使用哪种回收器、参数配置、分代状况等
额外:live 只输出存活对象
额外:format=b 二进制格式(文件小)
额外:file=filename 输出文件

4、例子

# 截取片断
$ jmap -clstats 8472
Index Super InstBytes KlassBytes annotations CpAll MethodCount Bytecodes MethodAll ROAll RWAll Total ClassName
1 -1 24694880 472 0 0 0 0 0 24 584 608 [B
2 -1 1305288 472 0 0 0 0 0 24 584 608 [I
3 11 461040 640 0 21624 132 5437 47840 23488 48432 71920 java.lang.Class
4 11 405576 584 128 13056 103 4108 51560 17416 49168 66584 java.lang.String
5 -1 372136 472 0 0 0 0 0 24 584 608 [Ljava.lang.Object;
6 11 343424 560 0 1352 9 213 2760 1488 3520 5008 java.util.concurrent.ConcurrentHashMap$Node
7 -1 150464 472 0 0 0 0 0 24 584 608 [C
8 11 148000 552 0 1376 7 149 1856 1152 2952 4104 java.util.HashMap$Node
9 2532 135280 528 0 688 3 56 1848 472 2776 3248 java.lang.ref.SoftReference
10 -1 101840 472 0 0 0 0 0 32 584 616 [Ljava.util.concurrent.ConcurrentHashMap$Node;
11 -1 91200 488 0 1272 14 109 3408 1528 3872 5400 java.lang.Object
12 9 69840 544 0 520 2 17 792 336 1704 2040 sun.util.locale.LocaleObjectCache$CacheEntry
13 -1 66272 472 0 0 0 0 0 32 584 616 [Ljava.util.HashMap$Node; $ jmap -finalizerinfo 8472
No instances waiting for finalization found # 截取片断
$ jmap -histo 8472
num #instances #bytes class name (module)
-------------------------------------------------------
1: 18142 24747712 [B (java.base@10.0.1)
2: 1378 2076168 [I (java.base@10.0.1)
3: 3874 463096 java.lang.Class (java.base@10.0.1)
4: 17191 412584 java.lang.String (java.base@10.0.1)
5: 3616 376776 [Ljava.lang.Object; (java.base@10.0.1)
6: 10755 344160 java.util.concurrent.ConcurrentHashMap$Node (java.base@10.0.1)
7: 183 152336 [C (java.base@10.0.1)
8: 4625 148000 java.util.HashMap$Node (java.base@10.0.1) # 生成dump文件可以用jhat分析
# 借助其他网站的在线分析工具
# jvisualvm分析
# windbg分析等
$ jmap -dump:live,format=b,file=heap.bin 8472
Heap dump file created

四、jhat(JVM Heap Analysis Tool)

1、功能:分析jmap生成的堆转储快照。

2、例子

$ jhat heap.bin
通过浏览器查看即可

3、其他好用的堆转储快照分析工具

  • IBM Memory Analyzer
  • Eclipse Memory Analysis
  • jvisualvm

最新文章

  1. Unity Shaders and Effets Cookbook
  2. winform中dataGridView高度自适应填充完数据的高度
  3. 使用TRACE时 输出 _CrtDbgReport: String too long or IO Error
  4. Oracle自定义函数实例
  5. PB 简单笔记!
  6. CorelDraw x6【Cdr x6】官方简体中文破解版(64位)安装图文教程、破解注册方法
  7. 转:从三层架构到MVC-MVP
  8. 关于一个简单面试题(。net)
  9. Bash: how to check if a process id (PID) exists
  10. CXF SOAP 及其安全控制
  11. python selenium 定制启动Chrome的选项注意事项(十九)
  12. Spring复习
  13. ng4.0 使用[innerHTML]动态插入的富文本如何设置样式
  14. sql like 语句
  15. c#double类型保留百分号后两位,且禁止四舍五入的方法
  16. 今日Q群:QQ群众群友反馈问题的归纳总结
  17. 畅通工程续 (SPFA模板Floy模板)
  18. Oracle 通过字段名查询其所在的表
  19. 我的Java之旅——答答租车系统
  20. 洛谷 P3382 【模板】三分法

热门文章

  1. MongDB的DateZone
  2. P3146 [USACO16OPEN]248
  3. redis多实例与主从同步及高级特性(数据过期机制,持久化存储)
  4. 控制器Controller
  5. 图片滚动js代码
  6. Selenium 2自动化测试实战32(Fixtures)
  7. Android提升Gradle编译速度或减少Gradle编译时间.md
  8. [Kaggle] How to kaggle?
  9. coreDNS一直处于创建中解决
  10. 【转载】用jquery给select option 赋值