JVM垃圾收集器-ParNew收集器
今天我给大家讲讲ParNew收集器。
ParNew收集器
ParNew收集器收集器其实就是Serial收集器的多线程版本,除了使用多线程进行垃圾收集之外,其余行为包括Serial收集器可用的所有控制参数、收集算法、Stop The world、对象分配规则、回收策略等都与Serial收集器完全一样,实现上这两种收集器也共用了相当多的代码。ParNew收集器的工作过程如下图所示。

ParNew收集器除了多线程收集之外,其他与Serial收集器相比并没有太多创新之处,但它却是许多运行在Server模式下的虚拟机中首选的新生代收集器,其中有一个与性能无关但很重要的原因是,除了Serial收集器外,目前只有它能与CMS收集器配合工作。在JDK1.5时期,HotSpot退出了一款在强交互应用中几乎可成为有划时代意思的垃圾收集器————CMS收集器,这款收集器是HotSpot虚拟机中第一款真正意义上的并发收集器,它第一次实现了让垃圾收集线程与用户线程同时工作,用前面那个例子的话来说,就是做到来在你妈妈打扫房间的时候你还能同时往地上扔纸屑。
ParNew收集器在单CPU的环境中绝对不会有比Serial收集器更好的效果,甚至由于存在线程交互的开销,该收集器在通过多线程技术实现两个CPU环境中都不能百分百地保证能超越Serial收集器。当然,随着可用使用的CPU数量的增加,它对于GC时系统资源的利用还是很有好处的。它默认开启收集线程数与CPU的数量相同,在CPU非常多的环境下,可用使用-XX:ParallelGCThreads参数来限制垃圾收集单线程数。
---------------------
作者:柯之梦
来源:CSDN
原文:https://blog.csdn.net/yin4302008/article/details/86409954
版权声明:本文为博主原创文章,转载请附上博文链接!
JVM垃圾收集器-ParNew收集器的更多相关文章
- JVM之ParNew收集器
新生代收集器,CMS默认搭配,Serial的多线程版本. -XX:UseParNewGC:指定使用ParNew收集器. -XX:ParalletGCThreads:指定限制垃圾收收集的线程数量. 默认 ...
- JVM探秘4---垃圾收集器介绍
Java虚拟机有很多垃圾收集器 下面先来了解HotSpot虚拟机中的7种垃圾收集器:Serial.ParNew.Parallel Scavenge.Serial Old.Parallel Old.CM ...
- JVM GC系列 — GC收集器
一.前言 前文学习了各种GC回收算法,掌握了GC回收的原理,但是真正的GC实现却尤为复杂,本篇文章将主要介绍各种GC收集器. 目前主流的HotSpot VM支持多种虚拟机,这些虚拟机也体现了GC的发展 ...
- ParNew收集器
ParNew收集器其实就是Serial收集器的多线程版本,除了使用多条线程进行垃圾收集之外,其余行为包括Serial收集器可用的所有控制参数,其中Par是Paralle简写l 并行(Parallel) ...
- [四] java8 函数式编程 收集器浅析 收集器Collector常用方法 运行原理 内部实现
Collector常见用法 常用形式为: .collect(Collectors.toList()) collect()是Stream的方法 Collectors 是收集器Collect ...
- 【JVM】垃圾收集器和收集器的选择策略
前言:新生代的收集器有:Serial,ParNew,Parallel Scavenge等.老年代有:CMS,SerialOld,Paraller Old等.接下来将深入理解各个垃圾收集器的原理,以及它 ...
- JVM垃圾收集器-G1收集器
G1收集器是当前收集器技术发展的最前沿成果,在JDK1.6_Updata14中提供了Early Access版本的G1收集器以供适用.G1收集器是垃圾收集器理论进一步发展的产物,它与前面的CMS收集器 ...
- JVM垃圾收集器-Serial收集器
今天我给大家分享的是Serial收集器,垃圾收集器就是内存回收的具体实现.Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商,不同的版本的虚拟机所提供的垃圾收集器都可能会有很大 ...
- JVM 经典垃圾收集器 —— CMS 收集器
本文部分摘自<深入理解 Java 虚拟机第三版> 概述 CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器.由于大部分 Java 应用主要 ...
随机推荐
- 卸载和删除wozhuan.exe
在虚拟机里面,偶然发现CPU占用居高不下,打开任务管理器,发现有多个 wozhuan.exe 进程,这是个我从来没有见过的进程,顺手卸载后,没过多久,结果又出来了,可以判断,这肯定是虚拟机中奖了.中奖 ...
- js时间过滤方法
js时间过滤 自己写的 记录一下 /** * * 过滤时间格式 * Created by Catlina at 2019.4.26 */ export const setTime = time = ...
- 本人亲身讲解本科期间学习Linux系统过程
学习Linux也有一段时间了,回首这段时光,既迷茫过也既充实过.当时刚接触Linux是在大学,身边的同学都在学习,我想我也该学点一技之长了.我本科并不是计算机专业的,关于软件的课程也就只有C++,所以 ...
- Divisor Subtraction
Description You are given an integer number nn. The following algorithm is applied to it: if n=0, th ...
- 一面(3) react方面
1.react的声明周期 getDefaultProps() getInitialState() componentWillMount() 以后组件更新不调用, 只调用一次 ...
- ESP32搭建3.ubuntu14.04下搭建esp32开发环境 (10-5)
硬件为乐鑫出品的ESP32一款集成了wifi和蓝牙的集成模块. 1.首先ctrl+alt+t打开终端,sudo -s选择用root权限登陆 . 2. 输入指令:sudo apt-get install ...
- namespace的作用
namespace的用法 1.什么是命名空间 通常我们学c++的时候经常看见头文件下有一句using namespace std,有什么用呢? 例如: #include<iostream> ...
- java8 stream lambda 一个例子
import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Pa ...
- 阶段02JavaWeb基础day01html&css
HTML 基础 概念 全写: HyperText Mark-up Language 译名: 超文本标记语言 超级文本标记语言是一种规范,一种标准, 超文本标记语言它通过标记符号来标记要显示的网页中的各 ...
- ES6标准入门读书笔记
第一章 基础 1.let和const命令 (1).let用于声明变量,所声明的变量只在当前代码块有效 特点:不存在变量提升 所以在变量声明之前就使用会报错 暂时性死区 只 ...