JVM垃圾收集器总结
前言:
了解了JVM垃圾回收算法之后就要说说垃圾收集器了。
一、三个概念
Stop-the-World:JVM执行任何一种GC算法时是会停止应用程序的执行的,所以大多数GC优化都是从减少Stop-the-world发生的时间来提高程序性能。
SafePoint:安全点。在JVM进行可达性分析的时候要在安全点进行,这个点是所有线程都被冻结,避免出现分析过程中对象的引用关系还在不断变化。前面说的程序停止不是随便停止,而是到达安全点之后再停顿下来。产生安全点的地方有:方法调用,循环跳转,异常跳转等
二、年轻代区的垃圾收集器
1、Serial收集器
单线程收集器,进行垃圾收集的时候必须暂停其他所有工作线程,直到收集结束。对于运行在client模式下的虚拟机是个很好的选择。可以通过设置-XX:+UseSerialGC进行使用,使用的是复制算法回收。
2、ParNew收集器
使用多条线程进行垃圾收集,其余行为和Serial收集器一样,可以和CMS收集器配合工作。可以通过设置-XX:+UseParNewGC进行使用,一般使用在server模式下。使用的是复制算法回收。
3、Parallel Scavenger收集器
前面两个收集器在于关注用户线程停顿时间,而这个收集器关注点在于达到一个可控的吞吐量【吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间)】,适合在后台运算不需要太多交互的任务。可以通过设置-XX:+UseParallelGC进行使用,是在server模式下的默认收集器。使用的是复制算法回收。
三、老年代区的垃圾收集器
1、Serial Old收集器
单线程收集器,进行垃圾收集的时候必须暂停其他所有工作线程,直到收集结束。client模式下的虚拟机默认的老年代收集器。可以通过设置-XX:+UseSerialOldGC进行使用,使用的是标记-整理算法回收。
2、Parallel Old收集器
配合年轻代为Parallel Scavenger收集器使用的,行为都与Parallel Scavenger收集器差不多只是算法不一样。同样适合在后台运算不需要太多交互的任务。可以通过设置-XX:+UseParallelOldGC进行使用。使用的是标记-整理算法回收。
3、CMS收集器
是一种以获取最短回收停顿时间为目标的收集器,可以通过设置-XX:+UseConcMarkSweepGC进行使用。基于标记-清除算法。运动过程有6个步骤:
初始标记:需要虚拟机进行stop-the-world,仅标记一下GC Roots所能连接到的对象
并发标记:进行GC Roots 追踪的过程,这时候程序不会停顿
并发预清理:查找执行并发标记阶段从年轻代进入老年代的对象。
重新标记:进行stop-the-world,扫描CMS堆中的剩余对象
并发清除:清理垃圾对象,程序不会停顿
并发重置:重置CMS收集器的数据结构
使用这个收集器使得用户进程能在运行的时候进行清理垃圾对象。在清理过程中产生的垃圾对象会由下一次再回收。但是由于使用的是标记-清除算法,容易使得内存碎片化。
4、G1收集器
这是一个既用于年轻代也用于老年代的收集器。使用G1收集器时Java堆就会与使用其他收集器的布局不同。它是将整个Java堆内存划分为多个大小相等的Region,这样年轻代和老年代就不再物理隔离。

可以通过设置-XX:+UseG1GC进行使用,使用的是复制+标记-整理算法回收。这样就不会出现内存碎片化。
具备如下特点:
并行与并发,使用多个CPU来缩短stop-the-world的停顿时间,这样在GC的时候不需要停顿Java线程。使得GC和用户线程并发执行。
分代收集:G1是存在于年轻代和老年代的收集器。年轻代使用负责算法,老年代使用收集器。
空间整合。是基于标记-整理的算法实现的。可以解决内存碎片的问题。
可预测的停顿。能让使用者明确指定在一个长度为M毫秒的时间片段内。
总结
这个其实只是针对不同场景进行选择收集器,只需要了解收集器适用的场景和作用。具体的算法之前已经介绍过。
JVM垃圾收集器总结的更多相关文章
- JVM调优:HotSpot JVM垃圾收集器
HotSpot JVM垃圾收集器 - Snooper - 博客园https://www.cnblogs.com/snooper/p/8718478.html
- JVM垃圾收集器-Parallel Scavenge收集器
今天我给大家讲讲JVM垃圾收集器-Parallel Scavenge收集器 Parallel Scavenge收集器 Parallel Scavenge收集器也是一个新生代收集器,它也是使用复制算法的 ...
- 7种JVM垃圾收集器特点,优劣势、及使用场景
今天继续JVM的垃圾回收器详解,如果说垃圾收集算法是JVM内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 一.常见的垃圾收集器有3类 1.新生代的收集器包括 Serial PraNew Pa ...
- 【006】【JVM——垃圾收集器总结】
Java虚拟机学习总结文件夹 JVM--垃圾收集器总结 垃圾收集器概览 收集算法是内存回收的方法论.垃圾收集据是内存回收的详细实现.Java虚拟机规范中对垃圾收集器应该怎样实现没有规定.不同的厂 ...
- 第五章 JVM垃圾收集器(1)
说明:垃圾回收算法是理论,垃圾收集器是回收算法的实现,关于回收算法,见<第四章 JVM垃圾回收算法> 1.七种垃圾收集器 Serial(串行GC)-- 复制 ParNew(并行GC)-- ...
- 第六章 JVM垃圾收集器(2)
上一章记录了几种常见的垃圾收集器,见<第五章 JVM垃圾收集器(1)> 1.G1 说明: 从上图来看,G1与CMS相比,仅在最后的"筛选回收"部分不同(CMS是并发清除 ...
- JVM垃圾收集器(1)
此文已由作者赵计刚薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 说明:垃圾回收算法是理论,垃圾收集器是回收算法的实现,关于回收算法,见<第四章 JVM垃圾回收算法& ...
- 5种JVM垃圾收集器特点和8种JVM内存溢出原因
先来看看5种JVM垃圾收集器特点 一.常见垃圾收集器 现在常见的垃圾收集器有如下几种: 新生代收集器: Serial ParNew Parallel Scavenge 老年代收集器: Serial O ...
- 7种 JVM 垃圾收集器特点、优劣势及使用场景(多图)
7种 JVM 垃圾收集器特点.优劣势及使用场景(多图) mp.weixin.qq.com 点击上方"IT牧场",选择"设为星标"技术干货每日送达! 一.常见垃 ...
- JVM垃圾收集器
JVM中垃圾的回收由垃圾收集器进行,随着JDK的不断升级,垃圾收集器也开发出了各种版本,垃圾收集器不断优化的动力,就是为了实现更短的停顿. 下面是7种不同的分代收集器,如果两个收集器之间有连线,则表示 ...
随机推荐
- Python-socket发送文件并解决粘包问题
服务器端要先根据客户端要下载的文件进行判断是否存在,还要根据文件大小来进行传送,最后还要比对文件的md5值来判断传送的文件是否正确,通过判断剩余字节来解决粘包问题 服务器端 # -*- coding: ...
- Android集成友盟facebook分享
在项目中需要将图片和视频分享到社交平台,所以集成了友盟分享.在集成facebook分享的时候走了不少弯路,现在将过程记录下来. 1.先将友盟facebook的jar包复制到项目的libs文件夹下. 2 ...
- Mac For Mongodb安装启动、停止及启动授权
1.到Mongodb官网下载相应的安装包 地址:https://www.mongodb.com/download-center?jmp=nav#community 2.Mac Mongodb安装过程 ...
- j++与++j
(j++)+(++j)+(++j) 核心部分汇编代码 执行顺序j原始值为5,存放在栈的ebp-4中;q无初始值,存放在栈的ebp-8中先执行一次j自增赋值++j ;j=6执行第一个加法运算;值存放在C ...
- C语言学习笔记--C语言中变量的属性关键字
变量属性关键字的使用语法:property type var_name; 1.auto 关键字 auto关键字是C语言中局部变量的默认的关键字,C编译器默认所有的局部变量都是auto的,它表明了被修饰 ...
- struts 文件上传示例
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io ...
- python fabric的安装与使用
背景:fabric主要执行远程的shell命令,包括文件的上传.下载,以及提示用户输入等辅助其它功能. 测试系统:ubuntu16 要求:python //系统有自带,ubuntu16 通常自带pyt ...
- R语言 arules包 apriori()函数中文帮助文档(中英文对照)
apriori(arules) apriori()所属R语言包:arules Mining Associations w ...
- 2、java 启动参数
1.java启动参数共分为三类: 其一是标准参数 (-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容:其二是非标准参数 (-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都 ...
- 使用GEO数据库来筛选差异表达基因,KOBAS进行KEGG注释分析
前言 本文主要演示GEO数据库的一些工具,使用的数据是2015年在Nature Communications上发表的文章Regulation of autophagy and the ubiquiti ...