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

参考:

JVM详解

如何监控 Java 垃圾回收机制: jps、jstack、jmap、jhat、jstat的更多相关文章

  1. 成为JavaGC专家(3)—如何监控Java垃圾回收机制(转载)

    原文:http://www.importnew.com/3146.html 为什么需要优化GC 或者说的更确切一些,对于基于Java的服务,是否有必要优化GC?应该说,对于所有的基于Java的服务,并 ...

  2. 成为JavaGC专家(2)—如何监控Java垃圾回收机制

    什么是GC监控? 垃圾回收收集监控指的是搞清楚JVM如何执行GC的过程,例如,我们可以查明: 1.        何时一个新生代中的对象被移动到老年代时,所花费的时间. 2.       Stop-t ...

  3. JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)

    性能分析工具jstatjmapjhatjstack 前提概要:         JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jsta ...

  4. 成为Java GC专家(3)—如何优化Java垃圾回收机制

    为什么需要优化GC 或者说的更确切一些,对于基于Java的服务,是否有必要优化GC?应该说,对于所有的基于Java的服务,并不总是需要进行GC优化,但前提是所运行的基于Java的系统,包含了如下参数或 ...

  5. Java 垃圾回收机制(早期版本)

    Java 垃圾回收机制在我们普通理解来看,应该视为一种低优先级的后台进程来实现的,其实早期版本的Java虚拟机并非以这种方式实现的. 先从一种很简单的垃圾回收方式开始. 引用计数 引用计数是一种简单但 ...

  6. Java垃圾回收机制(转)

    原文链接:Java垃圾回收机制 1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象:而在Java中,当没有对象引用指向原先分配给某个对象的内 ...

  7. [转载]深入理解Java垃圾回收机制

    深入理解Java垃圾回收机制 2016-07-28 20:07:49 湖冰2019 阅读数 14607更多 分类专栏: JAVA基础   原文:http://www.linuxidc.com/Linu ...

  8. 【转载】Java垃圾回收机制

    原文地址:http://www.importnew.com/19085.html Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联 ...

  9. 【转】深入理解 Java 垃圾回收机制

    深入理解 Java 垃圾回收机制   一.垃圾回收机制的意义 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再 ...

随机推荐

  1. JDK8+Tomcat8配置https【转】

    生成密钥对 我比较喜欢密钥对这个名字,因为它非常明确了HTTPS在传输过程中需要的两个钥匙(公钥和私钥).如果不太了解HTTPS的,可以要到搜索引擎去搜索一下HTTPS的原理. 首先,确保java的目 ...

  2. Scala学习笔记(五):内建控制循环

    前言 Scala中内建控制循环包括if.while.for.try.match和函数调用. if和while与java类似,不做介绍. for 基础用法 def main(args: Array[St ...

  3. 【转帖】解决远程连接MariaDB(mysql)很慢的方法

    在CentOS7上安装完成MariaDB之后,发现无论命令行还是程序中连接MariaDB的时候都很慢,大约要一二十秒,于是网上搜索了一番,发现下面的文章内容: 在进行 ping和route后发现网络通 ...

  4. 【QT】无需写connect代码关联信号和槽函数

    对于一些简单的事件判别,如点击按钮. 无需写代码关联信号和槽函数. connect(ui->Btnshowhello,SIGNAL(clicked(bool)),this,SLOT(Btnsho ...

  5. [Android Studio] Using API of OpenCV DNN

    前言 一.故事背景 NDK方法人脸识别 OpenCV4Android系列: 1. OpenCV4Android开发实录(1):移植OpenCV3.3.0库到Android Studio 2.OpenC ...

  6. JS编程题

    1.计算给定数组 arr 中所有元素的总和 (数组中的元素均为 Number 类型) function sum(arr) { var sum=0; for (var i=arr.length-1; i ...

  7. [原]Jenkins(十)---jenkins注册管理员admin并赋所有权限给admin

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...

  8. TensorFlow Jupyter Notebook 和matplotlib安装配置

    Jupyter Notebook 和matplotlib Jupyter Notebook安装 Python 3 : python3 -m pip install --upgrade pip pyth ...

  9. Maven使用deploy上传jar包到远程库

    一.环境准备 首先需要在本地环境安装好maven,并且在环境变量配置好 二.配置远程库认证 需要在./conf/setting.xml(maven的配置文件,不要弄错)中配置需要远程上传库的地址,用户 ...

  10. Spark Pipeline

    一个简单的Pipeline,用作estimator.Pipeline由有序列的stages组成,每个stage是一个Estimator或者一个Transformer. 当Pipeline调用fit,s ...