Java常见面试题(第 12 弹)

1、CMS收集器有什么缺点?

1)CMS收集器对CPU资源非常敏感;

2)CMS收集器无法处理浮动垃圾,可能出现“Concurrent Mode Failure”失败而导致另一次Full GC的产生

3)其采用的标记—清除算***产生空间碎片

 

2、G1收集器的工作过程是什么样的?

初始标记

并发标记

最终标记

筛选回收         

 

3、CPU时间和墙钟时间的区别是什么?

墙钟时间包括各种非运算的等待耗时,例如等待磁盘IO、等待线程阻塞。

而CPU时间不包括这些耗时,但当系统有多PCU或者多核的话,多线程系统会叠加这些CPU时间。

 

4、对象在内存的哪些地方分配?

大部分在堆上分配,且主要分配在新生代的Eden区上(但也可能经过JIT编译后被拆散为标量类型并间接地在栈上分配);

如果启用了本地线程分配缓冲,将按线程优先在TLAB上分配;

少数情况下也可能会直接分配在老年代中(如大对象)。

 

备注:对象在内存的分配规则不是百分百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数设置。

 

5、MinorGC和Full GC有什么不一样吗?

新生代GC(Minor GC):指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以MinorGC非常频繁,一般回收速度也比较快;



老年代GC(Full GC):指发生在老年代的GC,出现了Full GC,经常会伴随至少一次的Minor GC(但非绝对的,在ParallelScavenge收集器的收集策略里就有直接进行Full GC的策略选择过程)。Full GC的速度一般会比Minor GC慢10倍以上。

#面经##java工程师#
全部评论
小谢backup
点赞 回复
分享
发布于 2021-08-02 21:31

相关推荐

1 11 评论
分享
牛客网
牛客企业服务