JVM 学习笔记记录
JVM 学习笔记记录
Sun JDK 监控和故障处理工具
| 名称 | 主要作用 |
|---|---|
| jps | JVM Process Status Tool, 显示指定系统内所有的HotSpot虚拟机进程 |
| jstat | JVM Statistics Moitoring Tool,用于收集HotSpot虚拟机各方面的运行数据 |
| jinfo | Configuration info for java,显示虚拟机配置信息 |
| jmap | Memory Map for java,生成虚拟机的内存转储快照(heapdump文件) |
| jhat | JVM Heap Dump Browser,用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果 |
| jstack | Stack Trace for java,显示虚拟机的线程快照 |
常用命令:
1. jps -l 查询LVMID,及主类的名称
C:\Users\Harry>jps -l
11856 com.ssm.common.jvm.JvmTest
14368 com.ddc.template.TemplateApplication
16848
19664
6640 org.jetbrains.jps.cmdline.Launcher
7732 sun.tools.jps.Jps
2168 org.apache.zookeeper.server.quorum.QuorumPeerMain
2. jps -v 输出虚拟机进程参数
C:\Users\Harry>jps -v
11856 JvmTest -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:49232 -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 -Dfile.encoding=utf8
3. jstat -gc 11856 250 5 每250毫秒查询一次进程11856垃圾收集情况状况,一共查询5次
C:\Users\Harry>jstat -gc 11856 250 20
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
1024.0 1024.0 0.0 0.0 8192.0 7619.8 10240.0 0.0 4480.0 780.5 384.0 75.8 0 0.000 0 0.000 0.000
1024.0 1024.0 0.0 0.0 8192.0 7619.8 10240.0 0.0 4480.0 780.5 384.0 75.8 0 0.000 0 0.000 0.000
1024.0 1024.0 0.0 0.0 8192.0 7619.8 10240.0 0.0 4480.0 780.5 384.0 75.8 0 0.000 0 0.000 0.000
1024.0 1024.0 0.0 0.0 8192.0 7619.8 10240.0 0.0 4480.0 780.5 384.0 75.8 0 0.000 0 0.000 0.000
1024.0 1024.0 0.0 0.0 8192.0 7619.8 10240.0 0.0 4480.0 780.5 384.0 75.8 0 0.000 0 0.000 0.000
4. jstat -gc 11856 只查询一次
C:\Users\Harry>jstat -gc 11856
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
1024.0 1024.0 0.0 0.0 8192.0 7619.8 10240.0 0.0 4480.0 780.5 384.0 75.8 0 0.000 0 0.000 0.000
5. jstat -gcutil 11856 查询各JVM内存使用百分比
C:\Users\Harry>jstat -gcutil 11856
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 93.01 0.00 17.42 19.75 0 0.000 0 0.000 0.000
6. jstat -gcnew 11856 查询新生代GC状况
C:\Users\Harry>jstat -gcnew 11856
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
1024.0 1024.0 0.0 0.0 15 15 0.0 8192.0 7619.8 0 0.000
7. jstat -gcold 11856 查询老年代GC状况
C:\Users\Harry>jstat -gcold 11856
MC MU CCSC CCSU OC OU YGC FGC FGCT GCT
4480.0 780.5 384.0 75.8 10240.0 0.0 0 0 0.000 0.000
8. jinfo -flag CMSInitiatingOccupancyFraction 11856 查询JVM参数的值
C:\Users\Harry>jinfo -flag CMSInitiatingOccupancyFraction 11856
-XX:CMSInitiatingOccupancyFraction=-1
9. jinfo -sysprops 11856
可以把System.getProperties()信息打印出来
C:\Users\Harry>jinfo -sysprops 11856
Attaching to process ID 11856, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.92-b14
java.runtime.name = Java(TM) SE Runtime Environment
java.vm.version = 25.92-b14
......
10. jmap -dump:format=b,file=eclipse.bin 11856 生成java堆转储快照
C:\Users\Harry>jmap -dump:format=b,file=eclipse.bin 11856
Dumping heap to C:\Users\Harry\eclipse.bin ...
Heap dump file created
11. jhat eclipse.bin 分析dump文件,浏览器中访问http://localhost:7000
C:\Users\Harry>jhat eclipse.bin
Reading from eclipse.bin...
Dump file created Sun Jul 22 11:55:08 CST 2018
Snapshot read, resolving...
Resolving 11914 objects...
Chasing references, expect 2 dots..
Eliminating duplicate references..
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
11. jmap -heap 11856 查看堆中jvm参数情况
Attaching to process ID 11856, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.131-b11
using thread-local object allocation.
Parallel GC with 8 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 1073741824 (1024.0MB)
NewSize = 357564416 (341.0MB)
MaxNewSize = 357564416 (341.0MB)
OldSize = 716177408 (683.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 310902784 (296.5MB)
used = 90540600 (86.34624481201172MB)
free = 220362184 (210.15375518798828MB)
29.121836361555385% used
From Space:
capacity = 23068672 (22.0MB)
used = 11927744 (11.37518310546875MB)
free = 11140928 (10.62481689453125MB)
51.70537775213068% used
To Space:
capacity = 22544384 (21.5MB)
used = 0 (0.0MB)
free = 22544384 (21.5MB)
0.0% used
PS Old Generation
capacity = 716177408 (683.0MB)
used = 82475416 (78.6546859741211MB)
free = 633701992 (604.3453140258789MB)
11.516059439842035% used
13. jmap -dump:live,format=b,file=heap.hprof 11856
将heap.hprof传输出来到window电脑上使用mat工具分析。
14. jhat -heap 11856 显示java堆详细信息,如使用哪种回收器、参数配置、分代状况等,只在linux平台才可以测试
15. jstack -l 11856 除堆栈外,显示锁的附加信息
"Finalizer" #3 daemon prio=8 os_prio=1 tid=0x00000000152da800 nid=0x18b4 in Object.wait() [0x000000001664e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000ff608ee0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
- locked <0x00000000ff608ee0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)
Locked ownable synchronizers:
- None
"Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x00000000152b9000 nid=0x444c in Object.wait() [0x000000001654f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000ff606b50> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
- locked <0x00000000ff606b50> (a java.lang.ref.Reference$Lock)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)
Locked ownable synchronizers:
- None
本文由博客群发一文多发等运营工具平台 OpenWrite 发布
JVM 学习笔记记录的更多相关文章
- java之jvm学习笔记十三(jvm基本结构)
java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...
- JVM学习笔记-第三章-垃圾收集器与内存分配策略
JVM学习笔记-第三章-垃圾收集器与内存分配策略 tips:对于3.4之前的章节可见博客:https://blog.csdn.net/sanhewuyang/article/details/95380 ...
- JVM学习笔记-第六章-类文件结构
JVM学习笔记-第六章-类文件结构 6.3 Class类文件的结构 本章中,笔者只是通俗地将任意一个有效的类或接口锁应当满足的格式称为"Class文件格式",实际上它完全不需要以磁 ...
- JVM学习笔记-第七章-虚拟机类加载机制
JVM学习笔记-第七章-虚拟机类加载机制 7.1 概述 Java虚拟机描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被 ...
- JVM学习笔记——内存结构篇
JVM学习笔记--内存结构篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的内存结构部分 我们会分为以下几部分进行介绍: JVM整体介绍 程序计数器 虚拟机栈 本地方法栈 堆 方法 ...
- JVM学习笔记——垃圾回收篇
JVM学习笔记--垃圾回收篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的垃圾回收部分 我们会分为以下几部分进行介绍: 判断垃圾回收对象 垃圾回收算法 分代垃圾回收 垃圾回收器 ...
- JVM学习笔记——类加载和字节码技术篇
JVM学习笔记--类加载和字节码技术篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的类加载和字节码技术部分 我们会分为以下几部分进行介绍: 类文件结构 字节码指令 编译期处理 类 ...
- JVM学习笔记——内存模型篇
JVM学习笔记--内存模型篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的内存模型部分 我们会分为以下几部分进行介绍: 内存模型 乐观锁与悲观锁 synchronized优化 内 ...
- Activiti 学习笔记记录(2016-8-31)
上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件
随机推荐
- C#客户端通过安全凭证调用webservice
怎么解决给XML Web services 客户端加上安全凭据,从而实现调用安全的远程web方法?首先,有远程web服务Service继承自System.Web.Services.Protocols. ...
- c语言学习笔记第三章———数据和C
B站有视频演示 本章将会讲解c语言的数据定义和使用,您将会了解int.float.double.char的含义,了解命名的规则,对c语言会有更加深刻的认识. 变量命名: 我们先讲上次视频没讲的变量命名 ...
- Spreading the Wealth,思维
题目去洛谷 题意: 很清晰,n个人,每人有一些硬币硬币总数sum≡0(mod n),通过一些互相交换,使硬币数平均(即每人有相同个数的硬币) 分析: 还是有点思维含量的,我们这样想,我们其实就是要确定 ...
- for循环与嵌套(水仙花数与三角形的打印)
## 一.for循环语法:for(开始区间: 结束区间; 修改循环条件){ 循环体:} > 开始区间:初始化表达式(确定开始)int i = 1; > 结束区间:逻辑表达式(确定结束) i ...
- 通过Windows Visual Studio远程调试WSL2中的.NET Core Linux应用程序
最近两天在Linux中调试.NET Core应用程序,同时我发现在Linux中调试.NET Core应用程序并不容易.一直习惯在Visual Studio中进行编码和调试.现在我想的是可以简单快速的测 ...
- 05 flask源码剖析之配置加载
05 Flask源码之:配置加载 目录 05 Flask源码之:配置加载 1.加载配置文件 2.app.config源码分析 3.from_object源码分析 4. 总结 1.加载配置文件 from ...
- Python面向对象01 /面向对象初识、面向对象结构、类、self、实例化对象
Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象初识 2. 面向 ...
- 集训作业 洛谷P1469 找筷子
这个题的代码真的是短的不得了呢. 有个神奇的东西叫异或,写起来是这个样子的^. 这个东西可以查看2个数的二进制某位是否相同,相同取0,不同取1.虽然我用的不熟,但我可以想出来,如果2个相同的数异或,答 ...
- Ubuntu构建Docker私有仓库(Repository) 配置过程笔记
一.准备: 1.服务器(或者虚拟机2台,我的服务环境[ 阿里云服务器-Ubuntu 1804 +百度云-Ubuntu 1604]) 2.有效镜像(我这里以上一篇随笔镜像作为有效镜像https://w ...
- 详解TCP一:三次握手、四次挥手
TCP协议同样是运输层的协议,掌握TCP重点要关注这几个问题:顺序问题.丢包问题.连接维护.流量控制.拥塞控制.先解析下TCP报文段结构,相比于UDP要复杂很多. 首先还是两个端口号,对应着具体的应用 ...