JVM面试_7

Stop-the-World

这个单词就是说,JVM由于要执行GC而停止了应用程序的执行,即除了GC的线程执行外,所有线程都处于等待状态,并且这种情况在任何一种GC算法中都会发生.
多数GC优化就是通过减少Stop-the-World发生的时间来提高程序性能.


Safepoint安全点

形象的说: jvm垃圾回收就好比是宝洁阿姨在打扫卫生,如果一边打扫,一边有人扔垃圾可咋整?为了不让这种情况发生,即保洁阿姨在开始打扫前就和所有人说,我要搞卫生了,别扔垃圾了就成了.

在jvm垃圾回收时,如何达到上面的情况呢?

在可达性分析算法中,要分析哪个对象没有被引用的时候,必须在一个快照的状态点(可以理解为一瞬间) 进行,在这个点,所有的线程都被冻结了,不可以出现分析过程中引用关系还在变化的情况,因此,分析结果需要在某个节点具备确定性,该节点就叫安全点.

即安全点就是在可达性分析算法中对象引用关系不会发生变化的点,程序只有在安全点才会停下来.

产生Safepoint的地方:
方法调用;
循环跳转;
异常跳转等;


JVM的运行模式

  1. server模式:启动较慢,但是启动之后,由于采用的是重量级的虚拟机,优化更多,所以程序跑起来更快.
  2. client模式:启动较快,由于采用的是轻量级的虚拟机,所以程序跑起来相对慢一些.
  3. 通过在cmd的命令提示符窗口下输入java -version就可以看到我们当前jvm的运行模式了.
    4.

垃圾收集器之间的联系
在这里插入图片描述
垃圾收集器之间有连线就说明他们可以搭配使用.

年轻代常见的垃圾收集器

Serial收集器

  1. 通过命令UseSerialGC就可以使年轻代用这个收集器,它采用复制算法.
  2. Serial收集器采用单线程收集,进行垃圾收集时,必须暂停所有工作线程.
  3. 它简单而且高效,是Client模式下默认的年轻代收集器.
    在这里插入图片描述

ParNew收集器

  1. 通过命令UseParNewGC就可以使年轻代用这个收集器,它采用复制算法.
  2. 它采用多线程收集.
  3. 其余的行为.特点和Serial收集器一样.
  4. 它是server模式下首选的年轻代垃圾收集器.
  5. 单核执行效率不如Serial,在多核下执行才有优势.
    在这里插入图片描述

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

  1. 通过命令UseParallelGC就可以使年轻代用这个收集器,它采用复制算法.
  2. 使用多线程进行垃圾回收.
  3. 比起关注用户线程停顿时间,更关注系统的吞吐量.
  4. 在多核下执行才有优势,Server模式下默认的年轻代收集器.
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值