简介JVM的Serial及ParNew收集器
来源:互联网 发布:简单 php接口开发实例 编辑:程序博客网 时间:2024/05/16 14:26
Serial:
串行收集器,JVM client模式下的默认收集器,使用复制算法,在进行垃圾回收时会暂停其他所有的工作线程(stop the world,简称STW)直至回收结束,因此会影响用户的正常使用体验,但是因为少了多线程切换的开销,相较于其他收集器能够更加专注于垃圾回收,在单核场景下效率极高,并且在回收较小内存(几十或者一两百兆)时,停顿时间是毫秒级的。推荐使用场景:年轻代占用几十兆到一两百兆的桌面应用。
使用方式:-XX:+UseSerialGC,打开该开关后,使用Serial(年轻代)+Serial Old(老年代) 组合进行GC。
ParNew:
并行收集器,Serial的多线程版本,使用多条线程进行垃圾回收,其他特性与Serial一致。需要注意的是,ParNew在单核甚至双核环境下绝对不会有比Serial收集器更好的效果,但是随着CPU数量的增加ParNew相较于Serial的优势会越来越明显,但并不是成倍增长的,原因还是那个,多线程切换开销。
另外ParNew用于垃圾回收的线程可用参数-XX:ParallelGCThreads=n进行配置。建议n与主机逻辑cpu数一致。
使用方式:-XX:+UseParNewGC,打开该开关后,使用ParNew(年轻代)+Serial Old(老年代)组合进行GC。另外,ParNew是CMS收集器的默认年轻代收集器。
简单比较下两款收集器的使用效果,测试结果直接写在注释:
/** * 测试比较Serial及ParNew两个收集器 * -Xms2048m -Xmx2048m -XX:+PrintGCDetails -XX:+PrintFlagsFinal * * -XX:+UseSerialGC * gctime:100次,耗时107.640ms * * -XX:+UseParNewGC * 测试机逻辑cpu个数为4 * ParallelGCThreads=4 * gctime:100次,耗时59.583ms * ParallelGCThreads=3 * gctime:100次,耗时77.294ms * ParallelGCThreads=1 * gctime:100次,耗时137.109ms * ParallelGCThreads=5(可以超过主机逻辑cpu个数,但好像并没有意义) * gctime:100次,耗时76.557ms * * 测试结论:逻辑cpu的个数越多,ParNew相比Serial收集器的优势会越明显,但并不是成倍增长的,因为线程之间的频繁切换会消耗一定时间,因此,单核cpu,甚至双核cpu下Serial是要优于ParNew的 * 另外,ParallelGCThreads配成与主机逻辑cpu个数一致,效果是最好的。 * @author ljl */public class TestSerialVSParNew {private static int _10MB = 10 * 1024 * 1024;public static void main(String[] args) throws InterruptedException {for (int i = 0; i < 500; i++) {//不断往Eden区分配对象,触发minorGCbyte[] memory = new byte[10 * _10MB];Thread.sleep(100);}}}
阅读全文
1 0
- 简介JVM的Serial及ParNew收集器
- JVM中垃圾收集器 serial、parNew、parallel Scavenge;serial old、parallel old、CMS、G1
- 19.JVM中Serial收集器、ParNew收集器、Parallel收集器解析
- ParNew收集器
- 我的读书笔记——parNew收集器
- 简介JVM的CMS垃圾收集器
- JAVA垃圾收集器之ParNew收集器
- 简介JVM的Parallel Scavenge及Parallel Old垃圾收集器
- JVM内存模型及垃圾收集简介
- Serial收集器
- jvm中的垃圾收集器简介
- JVM垃圾收集器-对比Serial、Parallel、CMS和G1
- 我的读书笔记——Serial收集器
- 系统最常用的CMS GC mode——ParNew & CMS(Serial Old作为替补)(heap> 5g)
- JVM 垃圾收集器及GC参数
- JVM的垃圾收集器
- JVM的垃圾收集器
- JVM的垃圾收集器
- CodeForces
- 歌尔全新VR头显参考设计出炉,轻便+高超清显示值得期待
- js查找数组元素位置
- 从launcher中点击一个应用icon之后发生了什么?
- windows/Ubuntu搭建以太坊私有链环境
- 简介JVM的Serial及ParNew收集器
- git-flow应用流程
- 安卓集成支付宝
- stm32,中断
- 洗牌算法
- windows下搭建GUN环境开发C/C++
- log日志记录
- 15.Menu在活动中的使用
- 红外