Java-GC垃圾收集器

1. Serial
young generation
“单线程”收集器,是指进行垃圾收集时,必须暂停其他所有工作线程,直到收集结束。是历史最悠久的收集器。
2. Serial Old
tenured generation
Serial收集器的老年代版本,用途:可与Parallel Scavenge搭配使用;作为CMS收集器的后备预案。
3. ParNew
young generation
是Serial收集器的多线程版本。青年代收集时不需要stop the world。
调优参数:
-XX:SurvivorRatio
-XX:PretenureSizeThreshold
-XX:HandlePromotionFailure
4. Parallel Scavenge
young generation
GC自适应调优算法,注重吞吐量
调优参数:
-XX:GCTimeRatio 垃圾收集时间站总时间的比率,吞吐量的倒数
-XX:MaxGCPauseMillis 最大垃圾收集停顿时间
5. Parallel Old
tenured generation
Parallel Scavenge收集器的老年代版本,使用多线程的标记整理算法。
在注重吞吐量以及CPU资源敏感的场合,都可使用Parallel Scavenge与Parallel Old组合
6. CMS
tenured generation
一种以获得最短回收停顿时间为目标的收集器。
-XX:+UseConcMarkSweepGC 打开CMS
7. G1
垃圾收集器常用参数:
| 参数 | 描述 |
| UseSerailGC | |
| UseParNewGC | |
| UseConcMarkSweepGC | |
| UseParallelGC | |
| SurvivorRatio | 新生代中Eden区与Survivor区的容量比例,默认为8,Eden:Survivor=8:1 |
| PretenureSizeThreshold | 晋升至老年代对象大小,大于则在老年代分配 |
| MaxTenuringThreshold | 晋升至老年的年龄,经过一次Minor GC则加1,大于则进老年代 |
| UseAdaptiveSizePolicy | 动态调整个区域大小及进入老年代年龄 |
| HandlePromotionFailure | |
| ParallelGCThreads | 并行GC内存回收线程数 |
| GCTimeRatio | GC时间占总时间比率,默认99,即允许1%的GC时间。仅在Parallel Scavenge收集器生效 |
| MaxGCPauseMillis | GC最大停顿时间。仅在Parallel Scavenge收集器生效 |
| CMSInitiatingOccupancyFraction | CMS在年老代被使用多少后触发GC。默认68%,仅CMS |
| UseCMSCompactAtFullCollection | CMS收集后是否进行内存碎片整理,仅CMS |
| CMSFullGCsBeforeCompaction | CMS进行若干次收集后才进行内存碎片整理 |
Java-GC垃圾收集器的更多相关文章
- JAVA GC垃圾收集器的分析
本篇文章主要介绍了"JAVA GC垃圾收集器的分析",主要涉及到JAVA GC垃圾收集器的分析方面的内容,对于JAVA GC垃圾收集器的分析感兴趣的同学可以参考一下. ...
- java - GC垃圾收集器详解(一)
概要 该图标记了在jdk体系中所使用到的垃圾收集器及对应的关系图.图片上方为年轻代的垃圾收集器而图片下方是老年代的垃圾收集器.当选择某一个区域的垃圾收集器时会自动选择另外一个区域的另一个垃圾收集器.例 ...
- java - GC垃圾收集器详解(三)
以前收集器的特点 年轻代和老年代是各自独立且连续的内存块 年轻代收集必须使用单个eden+S0+S1进行复制算法 老年代收集扫描整个老年代区域 都是以尽可能少而快速地执行GC为设计原则 G1是什么 G ...
- java - GC垃圾收集器详解(二)
CMS收集器 CMS收集器(ConcurrentMarkSweep:并发标记清除)是一种以获取最短回收停顿时间为目标的收集器. 适合应用在互联网站或者B/S系统的服务器上,这类应用尤其重视服务器的响应 ...
- Java虚拟机垃圾收集器与内存分配策略
Java虚拟机垃圾收集器与内存分配策略 概述 那些内存须要回收,什么时候回收.怎样回收是GC须要完毕的3件事情. 程序计数器.虚拟机栈与本地方法栈这三个区域都是线程私有的,内存的分配与回收都具有确定性 ...
- [转] 深入理解Java G1垃圾收集器
[From] https://www.cnblogs.com/ASPNET2008/p/6496481.html 深入理解Java G1垃圾收集器 本文首先简单介绍了垃圾收集的常见方式,然后再分析了G ...
- JVM学习笔记——GC垃圾收集器
GC 垃圾收集器 Java 堆内存采用分代回收算法,因此 JVM 针对新生代和老年代提供了多种垃圾收集器. 1. Serial 收集器 Serial 收集器是单线程收集器,采用复制算法. 是最基本的垃 ...
- 深入理解 Java G1 垃圾收集器--转
原文地址:http://blog.jobbole.com/109170/?utm_source=hao.jobbole.com&utm_medium=relatedArticle 本文首先简单 ...
- Java GC收集器配置说明
根据Java GC收集器具体分类,我们可以看出JVM根据需求不同提供了三种选择:串行收集器.并行收集器.并发收集器. 串行收集器只适用于小数据量的情况,我们主要了解一下并行收集器和并发收集器.默认情况 ...
- 深入理解java虚拟机【Java虚拟机垃圾收集器】
Java堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK ...
随机推荐
- [素数个数模板] HDU 5901 Count primes
#include<cstdio> #include<cmath> using namespace std; #define LL long long ; bool np[N]; ...
- c#基础 第四讲
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 理解Javascript__理解undefined和null
来自普遍的回答: 其实在 ECMAScript 的原始类型中,是有Undefined 和 Null 类型的. 这两种类型都分别对应了属于自己的唯一专用值,即undefined 和 null. 值 un ...
- [Android Tips] 27. 检查 APK 是否可调试
使用 Android SDK 提供的 aapt 检查 APK 文件 $ aapt d badging ${APK_FILE} | grep 'application-debuggable' 检查自身 ...
- hibernate的二级缓存----collection和query的二级缓存
collection二级缓存: 不使用集合的二级缓存时: 运行下面的代码: @Test public void testCollectionSecondLevelCache1(){ Departmen ...
- springMVC的HandleMapping
http://blog.chinaunix.net/uid-20415521-id-1949916.html SpingMVC中的HandlerMapping (2007-05-22 11:33) 分 ...
- TFS中工作项的定制-修改面板
上一篇文章我们讲到了<TFS 中工作项的订制-修改工作流>,工作流只要我们设计出来,就可以进行定制修改了.这次通过简单的案例,了解一下,工作项的面板如何定制. 1.软件准备 ...
- JavaScript中的原型与原型链
一直对JavaScript的原型与继承不了解,参考<JavaScript权威指南(第六版)>和<JavaScript高级程序设计(第三版)>对这个点的知识做个整理,方便自己记忆 ...
- Storm-源码分析- Disruptor在storm中的使用
Disruptor 2.0, (http://ifeve.com/disruptor-2-change/) Disruptor为了更便于使用, 在2.0做了比较大的调整, 比较突出的是更换了几乎所有的 ...
- HTTP和HTTPS的请求和响应
HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法.HTTPS(Hypertext Transfer Protocol ove ...