JVM学习(一)、垃圾收集器简介

(7)G1收集器(Garbage-First):是当今收集器技术发展的最前沿的成果之一,G1是一款面向服务器端应用的垃圾收集器。与其他GC收集器相比,G1具备如下特点:
33.125:[GC [DefNew:3324K->152K(3712K),0.0025925secs] 3324K->152K(11904K),0.0031680 secs] 100.667:[FullGC [Tenured:0K->210K(10240K),0.0149142secs] 4603K->210K(19456K),[Perm:2999K->2999K(21248K)],0.0150007 secs]
[Times:user=0.01 sys=0.00,real=0.02 secs]
| GC日志区域名 | 对应GC收集器名 |
| [DefNew (Default New Generation) | Serial收集器 |
| [ParNew (Parallel New Generation) | ParNew收集器 |
| [PSYoungGen | Parallel Scavenge收集器 |
| [ParOldGen | Parallel Old收集器 |
而在方括号之外的“3324K->152K(11904K)”表示“GC前Java堆已使用容量->GC后Java堆已使用容量(Java堆总容量)”。
四、GC收集器参数
注意,这里的参数分类不是指只能在指定收集器类型配置。
1、 Serial串行收集器相关的参数
|
-XX:+UseSerialGC |
虚拟机运行在Client模式下的默认值,打开此开关后,使用Serial + Serial Old的收集器组合进行内存回收 |
|
-XX:SurvivorRatio |
新生代中设置eden区大小和survivior区大小的比例。默认为8,代表Eden:Survivor =8:1 |
|
-XX:PretenureSizeThreshold |
设置大对象直接进入老年代的阈值。当对象的大小超过这个值时,将直接在老年代分配。 |
|
-XX:MaxTenuringThreshold |
晋升到老年代的对象年龄。每个对象在坚持过一次Minor GC之后,年龄增加1,当超过这个参数值时就进入老年代 |
注意:当GC发生在新生代时,称为Minor GC,次收集;当GC发生在年老代时,称为Major GC,主收集。 一般的,Minor GC的发生频率要比Major GC高很多。
2、 ParNew并行收集器相关的参数
|
-XX:+UseParNewGC |
打开此开关后,使用ParNew + Serial Old的收集器组合进行内存回收 |
|
-XX:+UseParallelGC |
虚拟机运行在Server模式下的默认值,打开此开关后,使用Parallel Scavenge + Serial Old(PS Mark Sweep)的收集器组合进行内存回收 |
|
-XX:+UseParallelOldGC |
打开此开关后,使用Parallel Scavenge + Parallel Old的收集器组合进行内存回收 |
|
-XX:ParallelGCThreads |
设置用于垃圾回收的线程数。通常情况下可以和CPU数量相等,但在CPU数量比较多的情况下,设置相·对较小的数值也是合理的。 |
|
-XX:MaxGCPauseMills |
设置最大垃圾收集停顿时间。它的值是一个大于0的正数。收集器在工作时,会调整java堆大小或者其他一些参数,尽可能地把停顿时间控制在MaxGCPauseMills以内。 仅在Parallel Scavenge收集器时生效 |
|
-XX:GCTimeRatio |
设置吞吐量大小,即GC时间占总时间的比率。它的值是一个0到100之间的整数。假设GCTimeRatio的值为n,那么系统将花费不超过1/(1+n)的时间用于垃圾收集。默认值为99,即允许1%的GC时间,仅在Parallel Scavenge收集器时生效 |
|
-XX:+UseAdaptiveSizePolicy |
打开自适应GC策略。在这种模式下,新生代的大小、eden和survivior的比例、晋升老年代的对象年龄等参数会被自动调整,以达到在堆大小、吞吐量和停顿时间之间的平衡点。 |
| -XX:HandlePromotionFailure | 是否允许分配担保失败,即老年代的剩余空间不足以应付新生代的整个Eden和Survivor区的所有对象都存活的极端情况 |
3、 CMS 收集器相关的参数
|
-XX:+UseConcMarkSweepGC |
打开此开关后,使用ParNew + CMS —— Serial Old的收集器组合进行内存回收。Serial Old收集器是CMS收集器出现Concurrent Mode Failure失败后的备用收集器 |
|
-XX:ParallelCMSThreads |
设定CMS的线程数量。 |
|
-XX:CMSInitiatingOccupancyFraction |
设置CMS收集器在老年代空间被使用多少后触发,默认为68%。 仅在CMS收集器时生效 |
|
-XX:+UseCMSCompactAtFullCollection |
设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片整理。 仅在CMS收集器时生效 |
|
-XX:CMSFullGCsBeforeCompaction |
设定进行多少次CMS垃圾回收后,进行一次内存压缩(碎片整理)。 仅在CMS收集器时生效 |
|
-XX:+CMSClassUnloadingEnabled |
允许对类元数据区进行回收。 |
|
-XX:CMSInitiatingPermOccupancyFraction |
当永久区占用率达到这一百分比时,启动CMS回收(前提是-XX:+CMSClassUnloadingEnabled激活了)。 |
|
-XX:CMSInitiatingPermOccupancyOnly |
表示只在到达阈值的时候才进行CMS回收。 |
|
-XX:+CMSIncrementalMode |
使用增量模式,比较适合单CPU。增量模式在JDK8中标记为废弃,并且将在JDK9中彻底移除。 |
4、 G1收集器相关的参数
|
-XX:+UseG1GC |
使用G1回收器。 |
|
-XX:MaxGCPauseMillis |
设置最大垃圾收集停顿时间。 |
|
-XX:GCPauseIntervalMillis |
设置停顿间隔时间。 |
JVM学习(一)、垃圾收集器简介的更多相关文章
- JVM学习记录-垃圾收集器
先回顾一下上一篇介绍的JVM中常见几种垃圾收集算法: 标记-清除算法(Mark-Sweep). 复制算法(Copying). 标记整理算法(Mark-Compact). 分代收集算法(Generati ...
- Java虚拟机JVM学习05 类加载器的父委托机制
Java虚拟机JVM学习05 类加载器的父委托机制 类加载器 类加载器用来把类加载到Java虚拟机中. 类加载器的类型 有两种类型的类加载器: 1.JVM自带的加载器: 根类加载器(Bootstrap ...
- 【JVM】JVM中的垃圾收集器
垃圾收集器组合 Serial+Serial Old Serial+CMS ParNew+CMS ParNew+Serial Old Paralle Scavenge + Serial Old Para ...
- Spark学习之路 (十四)SparkCore的调优之资源调优JVM的GC垃圾收集器
一.概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了. jvm 中,程序计数器.虚拟机栈.本 ...
- jvm系列 (二) ---垃圾收集器与内存分配策略
垃圾收集器与内存分配策略 前言:本文基于<深入java虚拟机>再加上个人的理解以及其他相关资料,对内容进行整理浓缩总结.本文中的图来自网络,感谢图的作者.如果有不正确的地方,欢迎指出. 目 ...
- JVM笔记(三) 垃圾收集器(2)收集算法
垃圾收集器2:收集算法 主要通过阅读<深入了解Java虚拟机>(周志明 著)和网络资源汇集而成,为本人学习JVM的笔记.同时,本文理论基于JDK 1.7版本,暂不考虑 1.8和1.9 的新 ...
- JVM笔记(二) 垃圾收集器(1)
垃圾收集器 主要通过阅读<深入了解Java虚拟机>(周志明 著)和网络资源汇集而成,为本人学习JVM的笔记.同时,本文理论基于JDK 1.7版本,暂不考虑 1.8和1.9 的新特性,但可能 ...
- JVM优化之垃圾收集器以及内存分配
在jvm中,实现了多种垃圾收集器,包括:串行垃圾收集器.并行垃圾收集器.CMS(并发)垃圾收集器.G1垃圾收集器,接下来,我们一个个的了解学习. 串行垃圾收集器 串行垃圾收集器,是指使用单线程进行垃圾 ...
- 💕《给产品经理讲JVM》:垃圾收集器
前言 在上篇中,我们把 JVM 中的垃圾收集算法有了一个大概的了解,又是一个阴雨连绵的周末,宅在家里的我们又开始了新一轮的学习: 产品大大:上周末我们说了垃圾收集算法,下面是不是要讲一下这些算法的应用 ...
随机推荐
- (转载)python 命名.py 不能与模块相同,否则会报错
在学习python网页爬虫时,测试requests的post方法进行表单提交时,命名.py文件为requests.py 代码如下: import requests params={'firstname ...
- Maven之pom.xml配置文件详解
此文非原创,摘自:https://www.baidu.com/link?url=GlGgW21nijIiULDZj0RfPH8ofqGMqEnAzXiym7O3hfrZM5nFH2enukemBNTX ...
- 【转】像素 Pixel (Picture Element)
原文链接:https://blog.csdn.net/zssureqh/article/details/78768942 1.像素Pixel 讲到概念,首选Wiki百科.当然我说的是英文版Pixel ...
- IT行业三大定律
1:摩尔定律 该定律由Inter公司创始人戈登摩尔提出,摩尔定律指出:每一年半计算机等IT产品的性能会翻一番:或者说相同性能的产品在一年半后价格会降一半. 表现为:为适应摩尔定律,IT公司必须在较 ...
- POI对Excel的操作
1. 先导包 commons-io-2.6.jar包,用于对文件的操作. 下载地址:http://commons.apache.org/proper/commons-io/download_io.cg ...
- 【adb】执行adb devices 设备offline
解决办法: 1.执行adb kill-server,在执行adb devices 2.重启手机 ---------------------------------------------------- ...
- mac上terminal_问题_1117
(1)安装Homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install ...
- 大数据开发主战场hive (企业hive应用)
hive在大数据套件中占很的地位,分享下个人经验. 1.在hive日常开发中,我们首先面对的就是hive的表和库,因此我要先了解库,表的命名规范和原则 如 dwd_whct_xmxx_m 第1部分为表 ...
- Collection类,泛型
Collection(接口) 所有超级接口: Iterable<E> 一.集合 1.集合的介绍&集合和数组的区别 什么是集合:java中的一种容器 什么是数组:java中的一种容器 ...
- 深入-FastReport TfrxReport组件使用
[翻译] FastReport TfrxReport组件使用 一:加载和保存报表 报表默认保存在项目窗体文件中,大多数情况下,没有更多的操作要深圳市, 因此,你不需要采取特别措施来载入报告.如果你 ...