JVM-GC系统简介&可能会被问到的面试题

1、什么是GC

GC(Garbage Collection)垃圾回收器 ,在JVM执行引擎中自带这样一个GC系统,此系统会根据一定的算法监控内存和回收垃圾对象。

2、GC时要考虑哪些问题

1、如何判断对象是可回收对象;

2、使用什么算法进行回收;

3、执行GC的线程策略是什么;

3、如何判定哪些对象是垃圾对象

1、通过引用计数器

在对象中添加一个引用计数器,当对象被引用计数器+1,对象没被任何引用则计数器为0,GC可以回收;

2、可达性分析

从GC Root对象无法找到这个对象,此对象就是垃圾对象;

GC Root对象:

1、类变量、常量直接引用的对象;

2、实例变量直接引用的对象;

3、局部变量、参数变量直接引用的对象;

............

4、常用的GC算法

1、标记清除法

扫描内存,对存活的对象进行标记,再次扫描内存,清楚未标记的对象;

 

2、标记复制法

先扫描内存,标记存活对象,将对象复制到另一块区域中;

再次扫描内存,清除所有的对象;

 

 

3、标记整理法

先扫描内存,标记存活对象,将存活对象移动到内存一侧,再清楚另一侧的垃圾对象;

 

5、GC时的线程策略

1、串行(只允许GC或业务其中一个线程执行);

2、并行(利用多核CPU优势并行执行GC);

3、并发(允许GC线程和业务线程并发执行)。

 

6、JVM中有哪些常见的垃圾回收器 

1、Serial(串行垃圾回收器)

特点:

        1.内部使用一个线程进行垃圾回收,不能执行并行化;

        2.执行GC时其他所有业务都要暂停。

2、Parallel/Parallel-New(并行垃圾回收器)

特点:

        1.内部多个线程并行执行GC,发挥了多核CPU的优势,减少业务暂停时间;

        2.执行GC时其他业务都会被暂停。

3、CMS(并发垃圾回收器)----使用增量更新预防对象消失

特点:

        1.内部多个线程并行执行GC,发挥了多核CPU的优势,减少业务暂停时间;

        2.GC和用户业务线程并发执行;

        3.新生代使用标记复制算法、老年代使用标记清除算法。

4、G1(基于大内存的并发垃圾回收器)----使用快照预防对象消失

特点: 

        1.工作于服务器模式,主要面向多核、大内存的服务器应用;

        2.整个堆不再分成连续的年轻代和老年代,而是划分为了多个小堆区;

        3.GC时不会每次收集整个堆,而是以增量方法进行GC操作,每次只是对一个小堆区进行GC;

        4.可以在吞吐量和响应时间上达到一种相对的平衡;

        5.年轻代使用标记复制算法,老年代使用标记整理算法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值