一、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

作业8:常用java命令(二)的更多相关文章

  1. 笔记常用Linux命令(二) 进程和端口

    查看系统进程 ps:用于报告当前系统的进程状态 a:显示所有终端机下执行的程序 ps -ef/ps aux: 这两个命令都是查看当前系统正在运行进程,两者的区别是展示格式不同. 如果想要查看特定的进程 ...

  2. 作业7:常用java命令(一)

    一.Javac(java compiler) 1.功能:javac是一种前端编译器,负责将源代码转换为字节码. 2.例子 (1)代码 public class TestJavac { static c ...

  3. 常用java命令

    javap 反编译 javap xxx.class 查看大概 javap -v -p xxx.class 查看详细 jps 查看有哪些java进程 jinfo 查看或设置java进程的 vm 参数,只 ...

  4. maven工具使用之常用maven命令(二)

    1.创建java web项目: # mvn archetype:generate -DgroupId=com.igoodful.sdxs      -DartifactId=hubu  -Darche ...

  5. java中的常用类(二)

    java中的常用类(二) Math类 Math类的声明:public final class Math extends Object Math类是与数学计算有关的类,里面的方法都是静态方法,直接使用类 ...

  6. 黑马程序员——JAVA基础之常用DOS命令和环境变量的配置

    ------- android培训.java培训.期待与您交流! ----------   1.常用dos命令: dir   显示当前文件下目录                             ...

  7. Java学习中,常用的命令管理(Java 学习中的小记录)

    Java学习中,常用的命令管理      作者:王可利(Star·星星) 一.Window中常见的dos命令 在哪里操作dos命令: Win7 ---> 开始  ---->所有程序---& ...

  8. java基础基础总结----- 常用DOS命令(一)

    常用DOS命令 dir(directory):列出当前目录下的文件以及文件夹 mkdir (make directory) : 创建目录 rd (remove directory): 删除目录 cd ...

  9. Java命令学习系列(二)——Jstack

    Java命令学习系列(二)——Jstack 2015-04-18 分类:Java 阅读(512) 评论(0) jstack是java虚拟机自带的一种堆栈跟踪工具. 功能 jstack用于生成java虚 ...

随机推荐

  1. 状压dp之不相连块

    传送门 一块田里草地格子不能相邻,问有几种方案. 预处理不相邻块 #include<iostream> #include<cstdio> #include<algorit ...

  2. ubuntu18.04安装mysql以及重置密码创建新用户

    1.安装mysqlsudo apt-get install mysql-serversudo apt-get install mysql-clientsudo apt-get install libm ...

  3. 微信小程序 保存图片

    微信小程序 保存图片 注: 此处使用的是小程序 wepy框架, 原生或其他的请注意转换写法 <div class="handle"> <button class= ...

  4. 框架 | Spring面试题总结

    1.什么是Spring? Spring是一个开源的Java EE开发框架.Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性.Sprin ...

  5. LC 377. Combination Sum IV

    Given an integer array with all positive numbers and no duplicates, find the number of possible comb ...

  6. DPDK 网络加速在 NFV 中的应用

    目录 文章目录 目录 前文列表 传统内核协议栈的数据转发性能瓶颈是什么? DPDK DPDK 基本技术 DPDK 架构 DPDK 核心组件 应用 NUMA 亲和性技术减少跨 NUMA 内存访问 应用 ...

  7. WebXML部署服务

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmln ...

  8. Redis在Linux上面安装

    1 下载Redis:https://redis.io/download 下载完成之后:redis-4.0.11.tar.gz 2 将下载的压缩包传到linux对应文件夹下面(笔者上传到/opt/下面) ...

  9. .Netcore 2.0 Ocelot Api网关教程(2)- 路由

    .Netcore 2.0 Ocelot Api网关教程(1) 路由介绍 上一篇文章搭建了一个简单的Api网关,可以实现简单的Api路由,本文介绍一下路由,即配置文件中ReRoutes,ReRoutes ...

  10. Protel99SE推荐使用英文版

    Protel99SE的汉化版功能并不全,最好还是用英文原版,功能是最齐全的.用英文版的软件其实也不难,有限的几个词,习惯就好了.