Java中基于HotSpot虚拟机的垃圾收集器

| 名称 | 过程 | 优缺点 |
|
Serial |
进行垃圾收集时,必须暂停其他所有的工作进程,直到它收集结束。 Stop the world。 新生代收集器。 手工设置新生代的大小:-Xmn Eden与Survivor区的比例:-XX:SurvivorRatio 晋升老年代对象年龄:-XX:PretenureSizeThreshold |
简单而高效(运行在Client默认新生代收集器) 对于Client模式下的虚拟机来说是一个很好的选择。 |
|
ParNew |
就是Serial收集器的多线程版本。 新生代收集器。 使用-XX:UseConcMarkSweepGC选项来设置默认新生代收集器。 使用-XX:+UseParNewGC来强制使用它。 |
运行在Server模式下的虚拟机中首选的新生代收集器。 在多cpu环境下有较好的效果 |
|
Parallel Scavenge |
使用复制算法和并行多线程的收集器。 目标是:达到一个可控制的吞吐量。 新生代收集器。 经常被称为“吞吐量优先”收集器。 控制最大垃圾收集停顿时间:-XX:MaxGCPauseMillis 控制设置吞吐量大小:-XX:GCTimeRatio 自动调整新生代的大小:-XX:+UseAdaptiveSizePolicy |
没有:良好响应速度,适合需要与用户交互的程序; 高吞吐量:高效利用CPU,适合在后台运算而不需要太多交互的任务。 自适应调节策略是Parallel Scavenge 与ParNew的一个重要区别。 |
|
Parallel Old |
是Parallel Scavenge的老年代版本,使用多线程和“标记-整理”算法。 | 在注意吞吐量以及CPU资源敏感的场合,都可以优先考虑Paralle Scavenge 加 Parallel Old收集器。 |
| CMS |
Concurrent Mark Sweep。 是一种以获取最短回收停顿时间为目标的收集器。 适合B/S的服务器端。 整体过程分为4个步骤:初始标记、并发标记、重新标记和并发清除。 |
并发收集,低停顿。 3个明显的缺点:对CPU资源非常敏感;无法处理浮动垃圾;收集结束时会有大量空间碎片产生。 |
| G1 |
当今收集器技术发展的最前沿成果之一。 是一款面向服务端应用的垃圾收集器。 如果不计算维护Rememberd Set的操作,G1运行大致分为:初始标记、并发标记、最终标记、筛选回收。 |
并行与并发;分代收集;空间整合;可预测的停顿(相对于CMS的另一大优势) |
Java中基于HotSpot虚拟机的垃圾收集器的更多相关文章
- java中基于TaskEngine类封装实现定时任务
主要包括如下几个类: 文章标题:java中基于TaskEngine类封装实现定时任务 文章地址: http://blog.csdn.net/5iasp/article/details/10950529 ...
- 《深入理解Java虚拟机》垃圾收集器
说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物.事实上,GC的历史远比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态 ...
- Java虚拟机学习 - 垃圾收集器
HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器.如果两个收集器之间存在连线,就说明它们可以搭配使用. Serial(串行GC)收集器 Serial收集 ...
- Java虚拟机学习 - 垃圾收集器 (4)
HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器.如果两个收集器之间存在连线,就说明它们可以搭配使用. Serial(串行GC)收集器 Serial收集 ...
- java虚拟机(六)--垃圾收集器和内存分配策略
目前没有完美的收集器,不同的厂商.版本的虚拟机提供的垃圾收集器会有很大的差别,用户根据自己应用特点和要求组合出各个年代所使用 的收集器.基于jdk1.7Update14之后的虚拟机. HotSpot的 ...
- 深入理解Java虚拟机笔记——垃圾收集器与内存分配策略
目录 判断对象是否死亡 引用计数器算法 可达性分析算法 各种引用 回收方法区 垃圾收集算法 标记-清除算法 复制算法 标记-整理算法 分代收集算法 HotSpot算法实现 枚举根节点 GC停顿(Sto ...
- 深入理解Java虚拟机:垃圾收集器与内存分配策略
目录 3.2 对象已死吗 判断一个对象是否可被回收 引用类型 finalize() 回收方法区 3.3. 垃圾收集算法 1.Mark-Sweep(标记-清除)算法 2.Copying(复制)算法 3. ...
- 《深入理解Java虚拟机》——垃圾收集器与内存分配策略
GC需要完成: 哪些内存需要回收 什么时候回收 如何回收 如何确定对象不再使用 引用计数算法 给对象添加一个引用计数器,当有一个地方引用它时,计数器值进行加1操作:当引用失效时,计数器值进行减1操作: ...
- 深入理解java虚拟机之垃圾收集器
Java一个重要的优势就是通过垃圾管理器GC (Garbage Collection)自动管理和回收内存,程序员无需通过调用方法来释放内存.也因此很好多的程序员可能会认为Java程序不会出现内存泄漏的 ...
随机推荐
- python数据类型二
阅读目录 1.列表的去嵌套 2.元组 3.range 列表的增删改查 一,增: 注意 list和str是不一样的,lst可以发生改变,所以直接就在原来的对象上进行可操作 追加模式 lst = ['麻 ...
- go的IO函数,整理下最基本的IO处理函数,工欲善其事必先利其器
bufio.NewScanner()函数是一行一行地读,但是对/proc/函数,这里不是个好方法,最好是把所有的数据一次读完,然后再去读,有没有这样读的接口呢?把所有数据都读入到内存中然后再通过通过搜 ...
- Java 多线程 三种实现方式
Java多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没 ...
- 使用 ECS 实例创建 FTP 站点 linux
本文只做记载过程和问题,并不详细 官方教程走一遍 https://help.aliyun.com/document_detail/51998.html#h2-linux-ftp-2 值得注意的是步骤二 ...
- poj3074-Sodoku
解数独. 分析 考虑如何把数独解合法的条件转化为经典的01精确覆盖: 每个格子只能填一个数,1-9 每一列刚好填了1-9 每一行刚好填了1-9 每个九宫格刚好填了1-9 也就是说,每个格子,列,行,九 ...
- Luogu3147 USACO16OPEN 262144(动态规划)
感觉上这个题是可以直接暴力的,每次根据一段连续最小值个数的奇偶性决定是否划分区间,递归处理.然而写起来实在太麻烦了. 设f[i][j]为以i为左端点合并出j时的右端点.则有f[i][j]=f[f[i] ...
- Android中WebView的跨域漏洞分析和应用被克隆问题情景还原(免Root获取应用沙盒数据)
一.前言 去年年底支付宝的被克隆漏洞被爆出,无独有偶就是腾讯干的,其实真正了解这个事件之后会发现,感觉是针对支付宝.因为这个漏洞找出肯定花费了很大劲,主要是因为支付宝的特殊业务需要开启了WebView ...
- SPOJ694/DISUBSTR:Distinct Substrings——题解
https://vjudge.net/problem/SPOJ-DISUBSTR https://www.luogu.org/problemnew/show/SP694 http://www.spoj ...
- 2016多校联合训练1 D题GCD (ST表+二分)
暑假颓废了好久啊...重新开始写博客 题目大意:给定10w个数,10w个询问.每次询问一个区间[l,r],求出gcd(a[l],a[l+1],...,a[r])以及有多少个区间[l',r']满足gcd ...
- javascript实用例子
js学习笔记,别错过!很有用的. /////////////////////////////////////////////////////////////////////////////////// ...