Java必看面试题——垃圾收集器(持续更新)

吞吐量(Throughput)

CPU用于运行用户代码的时间与CPU总消耗时间的比值;
即吞吐量=运行用户代码时间 /(运行用户代码时间+垃圾收集时间);
高吞吐量即减少垃圾收集时间,让用户代码获得更长的运行时间;


垃圾收集器期望的目标(关注点)

  • 停顿时间
    停顿时间越短就适合需要与用户交互的程序;
    良好的响应速度能提升用户体验;
  • 吞吐量
    高吞吐量则可以高效率地利用CPU时间,尽快完成运算的任务;
    主要适合在后台计算而不需要太多交互的任务;
  • 覆盖区(Footprint)
    在达到前面两个目标的情况下,尽量减少堆的内存空间;
    可以获得更好的空间局部性;

栈帧的大小在什么时候确定的?

程序代码编译时确定


栈帧的大小在什么时候确定的存储了哪些信息?

方法的局部变量表
操作数栈
动态连接
方法返回地址


GC主要回收的内存区域是在哪块?

堆栈、方法区


GCRoot主要包含哪些对象?

1、虚拟机栈中的引用对象
2、方法区中的静态属性引用的对象
3、方法区中的常量引用的对象
4、本地方法栈中JNI(Native方法)的引用对象


哪个垃圾收集器可以同时收集新生代和老年代?

G1


并发垃圾收集和并行垃圾收集的区别?

  • 并行(Parallel)
    指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态;
    ParNew、Parallel Scavenge、Parallel Old
  • 并发(Concurrent)
    指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行);
    用户程序在继续运行,而垃圾收集程序线程运行于另一个CPU上;
    CMS、G1(也有并行)

可以用于老年代的垃圾收集器

CMS,G1


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值