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 文件
随机推荐
- 注册中心(Eureka/Consul)
基于SpringBoot1.5.4与SpringCloud(Dalston.SR2)的SpringCloud学习博客,转载请标明出处,O(∩_∩)O谢谢 - Spring Cloud简介 Spring ...
- Android详细介绍MPAndroidChart-LineChart
在开发当中曲线图用的时候太多了,之前都是自己手写,之后发现太累还丑不符合需求 MPAndroidChart 先介绍LineChart 0.效果图 首先依赖 1. implementation 'co ...
- 14.刚体组件Rigidbody
刚体组件是物理类组件,添加有刚体组件的物体,会像现实生活中的物体一样有重力.会下落.能碰撞. 给物体添加刚体: 选中游戏物体->菜单Component->Physics->Rigid ...
- day04总结
print("陈少最帅!!!") 输出结果: 陈少最帅!!! 可以变,不可变数据类型#1.可变类型:list,dict#在值改变的情况下,id号不变,也就是说内存地址不变,证明就是 ...
- scrapy 基础组件专题(十二):scrapy 模拟登录
1. scrapy有三种方法模拟登陆 1.1直接携带cookies 1.2找url地址,发送post请求存储cookie 1.3找到对应的form表单,自动解析input标签,自动解析post请求的u ...
- 03 flask源码剖析之threading.local和高级
03 threading.local和高级 目录 03 threading.local和高级 1.python之threading.local 2. 线程唯一标识 3. 自定义threading.lo ...
- 并发编程之关键字(synchronized、volatile)
并发编程主要设计两个关键字:一个是synchronized,另一个是volatile.下面主要讲解这两个关键字,并对这两个关机进行比较. synchronized synchronized是通过JMV ...
- JavaScript 基础 学习 (四)
JavaScript 基础 学习 (四) 解绑事件 dom级 事件解绑 元素.on事件类型 = null 因为赋值的关系,所以给事件赋值为 null 的时候 事件触发的时候,就没有事件处理 ...
- 如果你还不知道如何控制springboot中bean的加载顺序,那你一定要看此篇
1.为什么需要控制加载顺序 springboot遵从约定大于配置的原则,极大程度的解决了配置繁琐的问题.在此基础上,又提供了spi机制,用spring.factories可以完成一个小组件的自动装配功 ...
- WinForm微信扫码登录
源码还需优化,不喜勿喷. 微信官方文档 : https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat ...