如何监控 Java 垃圾回收机制: jps、jstack、jmap、jhat、jstat
一、MinorGC
一个新对象会被放到eden空间,当eden空间满了的时候,MinorGC就会执行,任何存活的对象,都从eden空间复制到to survivor空间,任何在from survivor空间里面的存活对象也会被复制到to survivor。
MinorGC结束的时候,eden空间和“from survivor空间都是空的,to survivor空间里面存储存活的对象,然后,在下次MinorGC的时候,两个survivor空间交换他们的标签,现在是空的from survivor标记成
为to,to survivor标记为from。因此,在MinorGC结束的时候,eden空间是空的,两个survivor空间中的一个是空的。
在MinorGC过程,如果to survivor空间不够大,不能够存储所有的从eden空间和from suvivor空间复制过来活动对象,溢出的对象会被复制到old代。溢出迁移到old代,会导致old代的空间快速增长,
会导致stop-the-world压缩垃圾回收。
1.jstat -gc 10098
S0C       S1C       S0U       S1U EC            EU         OC          OU         MC         MU         CCSC    CCSU   YGC YGCT  FGC FGCT   GCT 
56320.0 93184.0 56064.5  0.0   1098240.0 941742.1  479232.0   164843.3  126080.0 122784.3 13952.0 13335.0     28    1.204   4     0.953   2.157

堆内存 = 年轻代 + 年老代 + 永久代
年轻代 = Eden区 + 两个Survivor区(From和To)
jstat -options
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation
| 列 | 说明 | Jstat参数 | 
| S0C | 输出Survivor0空间的大小。单位KB。 | -gc -gccapacity -gcnew -gcnewcapacity | 
| S1C | 输出Survivor1空间的大小。单位KB。 | -gc -gccapacity -gcnew -gcnewcapacity | 
| S0U | 输出Survivor0已用空间的大小。单位KB。 | -gc -gcnew | 
| S1U | 输出Survivor1已用空间的大小。单位KB。 | -gc -gcnew | 
| EC | 输出Eden空间的大小。单位KB。 | -gc -gccapacity -gcnew -gcnewcapacity | 
| EU | 输出Eden已用空间的大小。单位KB。 | -gc -gcnew | 
| OC | 输出老年代空间的大小。单位KB。 | -gc -gccapacity -gcold -gcoldcapacity | 
| OU | 输出老年代已用空间的大小。单位KB。 | -gc -gcold | 
| PC | 输出持久代空间的大小。单位KB。 | -gc -gccapacity -gcold -gcoldcapacity -gcpermcapacity | 
| PU | 输出持久代已用空间的大小。单位KB。 | -gc -gcold | 
| YGC | 新生代空间GC时间发生的次数。 | -gc -gccapacity -gcnew -gcnewcapacity -gcold -gcoldcapacity -gcpermcapacity -gcutil -gccause | 
| YGCT | 新生代GC处理花费的时间。 | -gc -gcnew -gcutil -gccause | 
| FGC | full GC发生的次数。 | -gc -gccapacity -gcnew -gcnewcapacity -gcold -gcoldcapacity -gcpermcapacity -gcutil -gccause | 
| FGCT | full GC操作花费的时间 | -gc -gcold -gcoldcapacity -gcpermcapacity -gcutil -gccause | 
| GCT | GC操作花费的总时间。 | -gc -gcold -gcoldcapacity -gcpermcapacity -gcutil -gccause | 
| NGCMN | 新生代最小空间容量,单位KB。 | -gccapacity -gcnewcapacity | 
| NGCMX | 新生代最大空间容量,单位KB。 | -gccapacity -gcnewcapacity | 
| NGC | 新生代当前空间容量,单位KB。 | -gccapacity -gcnewcapacity | 
| OGCMN | 老年代最小空间容量,单位KB。 | -gccapacity -gcoldcapacity | 
| OGCMX | 老年代最大空间容量,单位KB。 | -gccapacity -gcoldcapacity | 
| OGC | 老年代当前空间容量制,单位KB。 | -gccapacity -gcoldcapacity | 
| PGCMN | 持久代最小空间容量,单位KB。 | -gccapacity -gcpermcapacity | 
| PGCMX | 持久代最大空间容量,单位KB。 | -gccapacity -gcpermcapacity | 
| PGC | 持久代当前空间容量,单位KB。 | -gccapacity -gcpermcapacity | 
| PC | 持久代当前空间大小,单位KB | -gccapacity -gcpermcapacity | 
| PU | 持久代当前已用空间大小,单位KB | -gc -gcold | 
| LGCC | 最后一次GC发生的原因 | -gccause | 
| GCC | 当前GC发生的原因 | -gccause | 
| TT | 老年化阈值。被移动到老年代之前,在新生代空存活的次数。 | -gcnew | 
| MTT | 最大老年化阈值。被移动到老年代之前,在新生代空存活的次数。 | -gcnew | 
| DSS | 幸存者区所需空间大小,单位KB。 | -gcnew | 
参考:
如何监控 Java 垃圾回收机制: jps、jstack、jmap、jhat、jstat的更多相关文章
- 成为JavaGC专家(3)—如何监控Java垃圾回收机制(转载)
		原文:http://www.importnew.com/3146.html 为什么需要优化GC 或者说的更确切一些,对于基于Java的服务,是否有必要优化GC?应该说,对于所有的基于Java的服务,并 ... 
- 成为JavaGC专家(2)—如何监控Java垃圾回收机制
		什么是GC监控? 垃圾回收收集监控指的是搞清楚JVM如何执行GC的过程,例如,我们可以查明: 1. 何时一个新生代中的对象被移动到老年代时,所花费的时间. 2. Stop-t ... 
- JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)
		性能分析工具jstatjmapjhatjstack 前提概要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jsta ... 
- 成为Java GC专家(3)—如何优化Java垃圾回收机制
		为什么需要优化GC 或者说的更确切一些,对于基于Java的服务,是否有必要优化GC?应该说,对于所有的基于Java的服务,并不总是需要进行GC优化,但前提是所运行的基于Java的系统,包含了如下参数或 ... 
- Java 垃圾回收机制(早期版本)
		Java 垃圾回收机制在我们普通理解来看,应该视为一种低优先级的后台进程来实现的,其实早期版本的Java虚拟机并非以这种方式实现的. 先从一种很简单的垃圾回收方式开始. 引用计数 引用计数是一种简单但 ... 
- Java垃圾回收机制(转)
		原文链接:Java垃圾回收机制 1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象:而在Java中,当没有对象引用指向原先分配给某个对象的内 ... 
- [转载]深入理解Java垃圾回收机制
		深入理解Java垃圾回收机制 2016-07-28 20:07:49 湖冰2019 阅读数 14607更多 分类专栏: JAVA基础 原文:http://www.linuxidc.com/Linu ... 
- 【转载】Java垃圾回收机制
		原文地址:http://www.importnew.com/19085.html Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联 ... 
- 【转】深入理解 Java 垃圾回收机制
		深入理解 Java 垃圾回收机制 一.垃圾回收机制的意义 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再 ... 
随机推荐
- Async Performance: Understanding the Costs of Async and Await
			Stephen Toub Download the Code Sample Asynchronous programming has long been the realm of only the m ... 
- portfolio
			1.工作量计算逻辑: 原始待办事项: 预估2个冲刺,如下图所示: Sprint1的故事点计划工作量5,空闲工作量28.如下图 Sprint2为预估冲刺,指的是预估待办事项在后续冲刺的预估计划,后续冲刺 ... 
- vim 脚本——插件
			:help usr_41.txt 查看vim默认可添加插件的路径 :set runtimepath? 查看vim系统插件与脚本位置 :echo $VIMRUNTIME :echo $VIM 查看所有插 ... 
- [Laravel] 12 - WEB API : cache implement
			前言 Ref: https://www.imooc.com/video/2873 服务端如何为客户端(app)的首页提供数据接口, 本篇用此作为例子演示接口的实现. 单例模式 一.三大原则 单例实现 ... 
- 《objective-c基础教程》学习笔记(四)—— OC面向对象编程初探
			在上篇博文中,我们编写了一个可以输出不同几何类型的小程序.通过C语言的struct结构体,给大家感受了下,对象的大概样子. 如果用Obejctive-C的面向对象的特征来实现.那么,drawShape ... 
- 保证Activity启动时每次都调用create
			原文:https://stackoverflow.com/questions/41766547/run-oncreate-every-time-android-app-is-opened If you ... 
- 爬虫----爬虫请求库requests
			一 介绍 介绍:---------------------------------------------使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的a ... 
- Missing artifact com.h2database:h2:jar:1.4.197
			之前OK的项目再次打开pom上报错: 一起出现的现象: maven库中这个包和H2数据库的包每次项目右键→maven→update project都会产生.lastupdate文件.原来是以前从mav ... 
- 网易云信&七鱼市场总监姜菡钰:实战解读增长黑客在B端业务的运用
			近些年 ,随着互联网的迅速崛起,“增长黑客”一词逐渐映入大众的眼帘,并成为了最热门的话题之一.从2018年开始,线上流量触达天花板,引流之争的激烈程度空前高涨,企业为了获得更多的关注,产品的比拼.流量 ... 
- Echarts 的Formatter的回调函数
			option = { tooltip: { trigger: 'axis', formatter: function (params,ticket,callback) { let res = para ... 
