博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解JVM GC
阅读量:5280 次
发布时间:2019-06-14

本文共 1682 字,大约阅读时间需要 5 分钟。

理解JVM GC对于我们把控Java应用有很大的帮助。下面我从运维角度,把网上的JVM相关的资料整理如下,以加深对JVM GC的理解。

如有错误的地方,请看官指正。

JVM内存使用分类

JVM的内存分区关系:

  • 【JVM整个堆内存】=年轻代+年老代
  • 【JVM整个内存】= (堆内存) + 非堆内存 = (年轻代 + 年老代) + 持久代

关于年轻代、年老代、持久代

对于JVM来说,内存分为三个区域:年轻代、年老代和持久代。年轻代和年老代用来存放Java进程中的变量,持久代用于放Java类信息。

一般对我们主要关注年轻代和年老代。JVM的分代可以用下面这张图表示:
jvm分代

年轻代分为三个区域:一个Eden区(简称E区域),两个Survivor区(我们定义为S0、S1)。

Java程序新申请的变量会放在E区;当E区满时,所有存活的对象会被移动到S0区。当S0区满时,S0中存活的对象被移动到S1区(这时候S0就空了,E区满时存活的对象会移动到S1区)。当S1区满时,将经历过S0的对象移动到年老代(O区)。S0区和S1区是对等的,这样一个对象要进入持久代会经历E区、S0区、S1区,然后进入到O区。

年老代用于存放从年轻代晋升上来的对象(E区->S0区->S1区->O区),一般我们设置的时候年老大比较大。

使用jstat查看当前Java进程JVM各区的情况

使用方法

jstat -gcutil 进程pid  刷新秒s

举例

[hadoop@localhost ~]$ jstat -gcutil 6572 1s S0 S1 E O P YGC YGCT FGC FGCT GCT 0.00 0.13 10.61 60.38 63.44 249 117.204 2 1.468 118.673 0.00 0.13 10.61 60.38 63.44 249 117.204 2 1.468 118.673 0.00 0.13 10.61 60.38 63.44 249 117.204 2 1.468 118.673 0.00 0.13 10.61 60.38 63.44 249 117.204 2 1.468 118.673 0.00 0.13 10.61 60.38 63.44 249 117.204 2 1.468 118.673 0.00 0.13 10.61 60.38 63.44 249 117.204 2 1.468 118.673 0.00 0.13 10.61 60.38 63.44 249 117.204 2 1.468 118.673 0.00 0.13 10.61 60.38 63.44 249 117.204 2 1.468 118.673 0.00 0.13 10.61 60.38 63.44 249 117.204 2 1.468 118.673 0.00 0.13 10.61 60.38 63.44 249 117.204 2 1.468 118.673

这里可以看到S0、S1、E、O区各个使用率情况,另外还有gc的次数统计

年轻代和年老代的 GC 关系

由于JVM的内存有限,而Java应用程序不会管理不用的内存,所以JVM需要一种垃圾回收机制(Garbage Collection),这就是JVM GC机制。

目前常见的GC收集器的概况如下:

内存区 GC算法 是否多线程 是否stop-the-world
年轻代 Serial 单线程
年轻代 ParNew 多线程
年轻代 Parallel Scavenge 多线程
年老代 CMS 多线程 整个过程有2次短暂stop-the-world
年老代 Serial Old(MSC) 单线程
年老代 Parallel Old 多线程 unkown

年轻代和年老代都有各自的垃圾回收机制。并且在我们实际使用的时候,是相互搭配的,具体搭配关系见下图:

jvm_gc

转载于:https://www.cnblogs.com/cheyunhua/p/8609913.html

你可能感兴趣的文章
Java面向对象抽象类案例分析
查看>>
100.Same Tree
查看>>
对SPI、IIC、IIS、UART、CAN、SDIO、GPIO的解释
查看>>
Thymeleaf模板格式化LocalDatetime时间格式
查看>>
庖丁解“学生信息管理系统”
查看>>
Pyltp使用
查看>>
其他ip无法访问Yii的gii,配置ip就可以
查看>>
使用json格式输出
查看>>
border-image属性在chrome中的不同效果
查看>>
php做的一个简易爬虫
查看>>
x的x次幂的值为10,求x的近似值
查看>>
hdu-5009-Paint Pearls-dp
查看>>
内存泄漏调查
查看>>
jquery获取html元素的绝对位置和相对位置的方法
查看>>
谈谈spring
查看>>
ios中webservice报文的拼接
查看>>
Power BI 报告的评论服务支持移动设备
查看>>
HDU 4920 Matrix multiplication
查看>>
ACdream 1068
查看>>
会声会影毛玻璃制作
查看>>