JVM垃圾收集器异同
来源:互联网 发布:图像分割算法代码 编辑:程序博客网 时间:2024/05/18 02:37
JVM 垃圾收集器有3类,这里主要介绍我们常用的 并行和并发收集器:
The Throughput Collector (也叫并行收集器)
串行收集器在GC时会停止其他所有工作线程(stop-the-world),CPU利用率是最高的,所以适用于要求高吞吐量(throughput)的应用,但停顿时间(pause time)会比较长,所以对web应用来说就不适合,因为这意味着用户等待时间会加长。而并行收集器可以理解是多线程串行收集,在串行收集基础上采用多线程方式进行GC,很好的弥补了串行收集的不足,可以大幅缩短停顿时间(如下图表示的停顿时长高度,并发比并行要短),因此对于空间不大的区域(如young generation),采用并行收集器停顿时间很短,回收效率高,适合高频率执行。
The Concurrent Low Pause Collector(也叫并发收集器)
并发收集器GC时GC线程和应用线程大部分时间是并发执行,只是在初始标记(initial mark)和二次标记(remark)时需要stop-the-world,这可以大大缩短停顿时间(pause time),所以适用于响应时间优先的应用,减少用户等待时间。由于GC是和应用线程并发执行,只有在多CPU场景下才能发挥其价值,在执行过程中还会产生新的垃圾floating garbage,如果等空间满了再开始GC,那这些新产生的垃圾就没地方放了,这时就会启动一次串行GC,等待时间将会很长,所以要在空间还未满时就要启动GC。mark和sweep操作会引起很多碎片,所以间隔一段时间需要整理整个空间,否则遇到大对象,没有连续空间也会启动一次串行GC。采用此收集器(如tenured generation),收集频率不能大,否则会影响到cpu的利用率,进而影响吞吐量。
针对年轻代和年老代,收集器的设置参数也是有区别的,如下:
the following collectors operate on the young generation:-XX:+UseSerialGC
-XX:+UseParallelGC
-XX:+UseParNewGC
the following collectors operate on the old generation:
-XX:+UseParallelOldGC
-XX:+UseConcMarkSweepGC
转自:http://blog.csdn.net/cpzhong/article/details/6834964
- JVM垃圾收集器异同
- JVM垃圾收集器异同
- JVM垃圾收集器异同
- JVM垃圾收集器异同
- JVM学习笔记(九)--- JVM垃圾收集器异同(再谈)
- JVM垃圾收集器
- JVM垃圾收集器
- JVM-垃圾收集器
- JVM垃圾收集器
- JVM垃圾收集器
- jvm 垃圾收集器
- 【JVM】垃圾收集器
- JVM 垃圾收集器
- JVM-垃圾收集器
- JVM > 垃圾收集器
- JVM--垃圾收集器
- JVM垃圾收集器
- JVM垃圾收集器
- maven 编译命令
- tomcat部署maven项目缺少spring-web.xxx.jar
- JavaBean中DAO设计模式介绍
- <s:if>标签和<c:if>标签的一点区别
- ios layer shadow 属性设置
- JVM垃圾收集器异同
- 总结
- C++常见问题(二)——虚函数、类与结构、引用与值传递
- iOS学习--ViewController之间的跳转
- Java中如何封装自己的类,建立并使用自己的类库?
- 通过Power Shell 在中国区Azure部署Azure SQL Data Warehouse
- 详谈京东的商品搜索系统架构设计
- leetcode.208. Implement Trie (Prefix Tree) 字典树
- MVC 利用枚举数据构造下拉框Select数据源