博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java垃圾回收之新生代垃圾收集器
阅读量:4709 次
发布时间:2019-06-10

本文共 1187 字,大约阅读时间需要 3 分钟。

问题:什么是Stop-the-World?

  1、JVM由于要执行GC而停止了应用程序的执行

  2、任何一种GC算法中都会发生

  3、多数GC优化通过减少Stop-the-world发生的时间来提高程序的性能(高吞吐,低停顿的效果)

 

问题:什么是垃圾收集器中的Safepoint ?

----》1、分析过程中对象引用关系不会发生变化的点

2、产生Safepoint的地方:地方调用,循环跳转,异常跳转

3、安全点数量的适中(太少,让收集器等待太久,少多,消耗资源)

 

问题:请问JVM的运行模式?

----》

1、Server模式,启动慢,重量级虚拟机

2、Client模式,启动快,轻量级虚拟机

 

问题;怎样查询当前虚拟机的运行模式是什么呢?

----》 java -version

C:\Users\Administrator>java -versionjava version "1.8.0_201"Java(TM) SE Runtime Environment (build 1.8.0_201-b09)Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

  

问题:垃圾收集器之间的联系?

----》不同公司会做不同版本的虚拟机,去针对不同的场景。下图是垃圾收集器之间的联系图。

如果有连线的,就说明可以配合使用。

 

Serial收集器(-XX: + UseSerialGC , 复制算法,历史最久的算法)

---》

1、单线程收集,进行垃圾收集时,必须暂停所有工作线程(不用担心,停顿时间最多是一百多毫秒,如果不是频繁发生,完全可以接受)

2、简单高效、Client模式下默认的年轻代收集器

 

ParNew收集器(-XX: + UseParNewGC , 复制算法,在server模式下,ParNew收集器是非常重要的)

---》

1、多线程收集,其余的行为,特点和Serial 收集器一样

2、单核执行效率不如Serial ,在多核下执行才有优势

 

Parallel Scavenge收集器 拍了佬猪 死敢喔猪(-XX: +UseParallelGC,复制算法,和ParNew差不多,多线程,适合后端运行,不需要太多交互)

  吞吐量 = 运行用户代码时间 / (运行用户代码时间+垃圾收集时间)

  1、比起关注用户线程停顿时间,更关注系统的吞吐量

  2、在多核下执行才有优势,Server模式下默认的年轻代收集器

使用Parllel Scvenge收集器配合自适应策略,以及在启动策略中加入 -XX:+UseAdaptiveSizePolicy

会把内存调优任务交给虚拟机完成

 

转载于:https://www.cnblogs.com/vingLiu/p/10657747.html

你可能感兴趣的文章
C#中StreamReader读取中文出现乱码
查看>>
使用BufferedReader的时候出现的问题
查看>>
批处理文件中的路径问题
查看>>
hibernate出现No row with the given identifier exists问题
查看>>
为什么wait()和notify()属于Object类
查看>>
配置NRPE的通讯
查看>>
匹配两个空格之间的字符。。。
查看>>
CSS 文字溢出 变成省略号 ...
查看>>
Spring事务
查看>>
java编程基础(三)流程控制语句
查看>>
让数据库跑的更快的7个MySQL优化建议
查看>>
jquery 取id模糊查询
查看>>
解决在vue中,自用mask模态框出来后,下层的元素依旧可以滑动的问题
查看>>
SSH加固
查看>>
python 二维字典
查看>>
实验吧之【天下武功唯快不破】
查看>>
2019-3-25多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)...
查看>>
win7-64 mysql的安装
查看>>
dcm4chee 修改默认(0002,0013) ImplementationVersionName
查看>>
maven3在eclipse3.4.2中创建java web项目
查看>>