JVM垃圾回收机制三
垃圾回收器
分代垃圾回收常见的垃圾回收器

判断一个垃圾回收器好坏的标准
1、吞吐量越高越好
2、工作线程暂停时间越短越好。
Serial垃圾回收器
串行回收器时最古老的最基本的垃圾回收器,工作线程会产生较长时间的停顿,只使用一个线程去回收。新生代使用复制算法,老年代使用标记压缩算法。
特点:它是单线程的串行回收,在进行垃圾回收时,其他工作线程无法工作。

JVM参数配置:-XX:+UseSerialGC
ParNew收集器
它是serial收集器的多线程版本。新生代并行,老年代串行;新生代复制算法,老年代标记整理算法。它可以和老年代回收器CMS回收器配合使用。在单核CPU下,它的收集效率不如Serial,因为多线程间存在上下文切换。

JVM参数配置:-XX:+UseParNewGC
-XX:+ParallerGCThreads 限制线程数量
并行:指多条垃圾回收线程并行工作,用户的工作线程仍然处于等待状态。
并发:用户线程于垃圾回收线程同时执行,用户工作线程仍然可以工作
Paraller Scavenge收集器:
类似于ParNew收集器同样是新生代的多线程收集器,但ParNew关注的是尽可能缩短用户的线程的等待时间,而ParScavenge想提高吞吐量。
吞吐量:CPU运行用户代码的时间于CPU总耗时的比值。即吞吐量=运行用代码时间/(运行用户代码时间+垃圾收集时间)。
JVM参数:-XX:+UserParallelGC
Parallel Old
Parallel Scavenge收集器的老年代,使用多线程和标记整理算法。可与Parallel Scavenge配合使用来提高吞吐量。

JVM参数:-XX:UserParallelOldGc
Serial Old
Serial 收集器的老年代版本。
CMS垃圾收集器
旨在缩短用户线程的等待时间,是一种老年代收集器,采用标记清除算法,垃圾收集线程可以用户工作线程并发的执行。CMS将整个垃圾回收过程分成了四个步骤:
1、初始标记:标记出与GCRoots相关联的对象,速度很快。
2、并发标记:标记出GC Roots引用链上的所有对象,此过程可以和用户线程并发执行
3、重新标记:在并发标记过程中,因为用户线程并发的执行,可能某些对象引用发生变化,此过程是为了更正变动的对象引用。
4、并发清除:

初始标记和重新标记必须暂停用户工作线程,但这两个过程执行速度很快。并发标记和并发清除耗时较长,可以与用户线程并发的执行。
CMS收集器的缺点:
(1)无法处理在并发标记过程中产生的垃圾,只能等到下次垃圾回收再清理。产生的垃圾有可能将内存空间填满,无法为新对象分配足够的内存空间,从而出现“Concurrent Mode Failure”。
(2)产生空间碎片,由于采用标记清除算法,所以可能会产生大量的空间碎片。
(3)因为并发阶段,垃圾回收线程会与用户线程竞争资源,导致吞吐量降低。
G1回收器
特点:
(1)并行并发同在,在多核CPU下,使用多个CPU进行垃圾回收,来缩短用户等待时间。
(2)分区收集,与其他垃圾回收器一样,虽然有新生代和老年代的概念,但它将整个JVM堆分为若干个大小相等的独立区域(Region),但新生代和老年代不再是物理隔离了。
(3)空间整合,不会产生内存空间碎片。
(4)可预测的停顿,建立棵可预测的停顿时间模型,使用者可以指定垃圾收集时间不得超过多长时间。
回收过程:
初始标记
并发标记
最终标记
筛选回收:对各个区域中的回收价值进行排序,选择允许时间内,价值最大的进行回收
JVM垃圾回收机制三的更多相关文章
- JVM基础系列第8讲:JVM 垃圾回收机制
		
在第 6 讲中我们说到 Java 虚拟机的内存结构,提到了这部分的规范其实是由<Java 虚拟机规范>指定的,每个 Java 虚拟机可能都有不同的实现.其实涉及到 Java 虚拟机的内存, ...
 - JVM内存管理、JVM垃圾回收机制、新生代、老年代以及永久代
		
内存模型 JVM运行时数据区由程序计数器.堆.虚拟机栈.本地方法栈.方法区部分组成,结构图如下所示. JVM内存结构由程序计数器.堆.栈.本地方法栈.方法区等部分组成,结构图如下所示: 1)程序计数器 ...
 - JVM 垃圾回收机制和常见算法和 JVM 的内存结构和内存分配(面试题)
		
一.JVM 垃圾回收机制和常见算法 Sun 公司只定义了垃圾回收机制规则而不局限于其实现算法,因此不同厂商生产的虚拟机采用的算法也不尽相同.GC(Garbage Collector)在回收对象前首先必 ...
 - JVM垃圾回收机制和常用算法
		
由于疫情的原因,所以目前一直在家远程办公,所以很多时间在刷面试题,发现2019大厂的面试虽然种类很多,但是总结了一下发现主要是这几点:算法和数据结构. JVM.集合.多线程.数据库这几点在面试的时候比 ...
 - JVM垃圾回收机制总结:调优方法
		
转载: JVM垃圾回收机制总结:调优方法 JVM 优化经验总结 JVM 垃圾回收器工作原理及使用实例介绍
 - JVM内存管理和JVM垃圾回收机制
		
JVM内存管理和JVM垃圾回收机制(1) 这里向大家描述一下JVM学习笔记之JVM内存管理和JVM垃圾回收的概念,JVM内存结构由堆.栈.本地方法栈.方法区等部分组成,另外JVM分别对新生代和旧生代采 ...
 - JVM垃圾回收机制概述
		
JVM垃圾回收机制概述 1.定义 是指JVM用于释放那些不再使用的对象所占用的内存. 2.方式 2.1引用计数(早期) 当引用程序创建引用以及引用超出范围时,JVM必须适当增减引用数.当某个对象的引用 ...
 - Java虚拟机学习笔记——JVM垃圾回收机制
		
Java虚拟机学习笔记——JVM垃圾回收机制 Java垃圾回收基于虚拟机的自动内存管理机制,我们不需要为每一个对象进行释放内存,不容易发生内存泄漏和内存溢出问题. 但是自动内存管理机制不是万能药,我们 ...
 - 真的可惜,四面阿里,结果我被JVM垃圾回收机制与 OOM异常卡住了
		
前言 为什么需要垃圾回收 首先我们来聊聊为什么会需要垃圾回收,假设我们不进行垃圾回收会造成什么后果,我们举一个简单的例子 我们住在一个房子里面,我们每天都在里面生活,然后垃圾都丢在房子里面,又不打扫, ...
 
随机推荐
- 页面刷新 方法总结 JSP刷新[转]
			
1) <meta http-equiv="refresh"content="10;url=跳转的页面"> 10表示间隔10秒刷新一次 2) < ...
 - XML 解析中 SelectSingleNode 与 SelectNodes 使用通配符介绍
			
俺是 XML XPath的新手,最近因为项目需要,研究了一下基本的两个函数 SelectSingleNode和SelectNodes 是如何实用通配符的,分享以下基本经验: 假设有段XML 如下所示: ...
 - bzoj 1798 Seq 维护序列seq —— 线段树
			
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1798 这题还4A... 注意:cnt 从1开始:各种模 p:乘法标记初始值是 1:可能乘 0 ...
 - web缓存概述
			
缓存无处不在,所展示出的仅仅是服务器端的缓存,我们从细节层面一层层分析 但是在此之前,我们先要知道什么是缓存与为什么要使用缓存,是时候百度一波喽~ 缓存就是数据交换的缓冲区(称作Cache),当某一硬 ...
 - git常见错误及解决方案总结
			
git常见错误及解决方案总结 使用git在本地创建一个项目的过程 $ makdir ~/hello-world //创建一个项目hello- ...
 - bugfree-解决方案的意思
			
BugFree的7种解决方案各自的含义: By Design - 就是这么设计的,无效的Bug Duplicate - 这个问题别人已经发现了,重复的Bug External - 是个外部因素(比如浏 ...
 - 如何将excel中的一个表格内容转成xml格式的文件
			
转自:http://www.cnblogs.com/sansi/archive/2012/02/06/2340471.html 感谢作者,解决了折磨我几天的问题,顿时心情开朗~ ----------- ...
 - Jquery等待ajax执行完毕继续执行(断点调试正常,运行异常)
			
以前写过一个程序,发现用断点调试的时候,一步步的运行,程序是可以的,但是去了断点程序就出现了问题. $(document).ready(function(){ var arra=new Array() ...
 - sql server 2008 删除某数据库所有表
			
/* ------sqlserver 2008 删除某数据库所有表-------- */ declare @tname varchar(8000) set @tname='' select @tnam ...
 - web调试利器_fiddler
			
此文已由作者夏君授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.fiddler简介 直接引用官网介绍 The free web debugging proxy for a ...