常问的GC相关面试题(二)

简介: 常问的GC相关面试题(二)

十一、4大垃圾回收思想是什么?


参考回答:

(1)引用计数(可能会死循环持有)

(2)复制( 新生代 ,因为对象生命周期短)  

(3)标记清除

(4)标记整理 (老年代)


十二、新生代满了之后,哪些引用的对象是不能回收的?


参考回答:


JVM中使用了一种GC Root的可达性分析算法,通过对每个对象,都分析一下有谁在引用他,然后一层一层往上去判断,看是否有一个GC Roots。


十三、Java中对象的引用类型有哪些?


参考回答:

(1)强引用:就算OOM也不会对对象进行回收,会造成内存泄漏
(2)软引用:内存足够不进行回收,内存不够的话才进行回收   VMoptions:-Xms20M -Xmx20M  
常用于:用HashMap来保存图片的路径 和 相应图片关联的软引用之间的映射关系,避免OOM的问题
(3)弱引用:只要垃圾回收机制一运行,就会进行回收
(4)虚引用:不常用,一般用于监控对象的回收信息


十四、什么情况会导致OOM?


参考回答:


(1)深度的方法调用     StackOverFlowError
(2)堆内存溢出         OutOfMemoryError: Java heap space
(3)清理垃圾,但是很快又填满         GC overhead
(4)nio程序在分配本地内存的时候,本地内存用光了,内存用光之后,当再次分配内存的时候,程序就崩了。
(5)MetaspaceOOM (重复吃Aug年间静态类变量)    
(6)一个应用进程创建了多个线程超出了系统的限制,linux默认1024,可以通过修改其中的linux服务器配置解决。


十五、哪些对象可以作为GC Roots?


参考回答:

(1)虚拟机栈(栈帧中的本地变量表)中的引用的对象


(2)方法区中的类静态属性引用的对象


(3)方法区中的常量引用的对象


(4)本地方法栈中JNI(Native方法)的引用对象


十六、聊一聊我们为什么要去了解GC和内存分配


参考回答:

在真实工作场景的项目中,时不时的会发生内存溢出、内存泄露的问题,这也是不可避免的Bug,这些潜在的Bug在某些时候会影响到项目的正常运行。
如果你的项目没有合理的进行业务内存分配,将会直接影响到的项目的并发处理。
当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节,而了解了GC实现机制则是我们一切监控和调节的前提。

十七、Java虚拟机将会在什么地方进行垃圾回收?


参考回答:

说起垃圾回收的场所,了解过JVM(Java Virtual Machine Model)内存模型的朋友应该会很清楚,堆是Java虚拟机进行垃圾回收的主要场所,其次要场所是方法区。


十八、从哪几个方面可以评估一个GC的优劣


参考回答:

GC不应该成为影响系统性能的瓶颈,我们在评估 GC收集器的优劣时一般考虑以下几点:

(1)吞吐量
(2)GC开销
(3)暂停时间
(4)GC频率
(5)堆空间
(6)对象生命周期


十九、System.gc 是 Full Gc 吗?


参考回答:
System.gc 其实是做一次full gc操作。这一点可以根据 DisableExplicitGC 的注释说明来看。

注释:Tells whether calling System.gc() does a full GC。


二十、简单说说JVM优化该从什么方面入手(GC方向)


参考回答:

JVM优化,主要是让对象在新生代里分配和回收,尽量不要让太多对象频繁进入老年代,避免频繁的垃圾回收,同时给足系统充足的内存,避免新生代频繁进行垃圾回收。从上述这几个方面进行JVM的优化


相关文章
|
5月前
|
缓存 安全 算法
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
60 0
|
5月前
|
监控 算法 Java
Java面试题:如何在Java中触发一次Full GC?请详细解释垃圾回收机制和知识
Java面试题:如何在Java中触发一次Full GC?请详细解释垃圾回收机制和知识
414 4
【面试题精讲】JVM中哪些对象可以被称为GC ROOT对象
【面试题精讲】JVM中哪些对象可以被称为GC ROOT对象
|
7月前
|
设计模式 缓存 算法
史上最全Java面试题:数据结构+算法+JVM+线程+finalize+GC
基本概念 操作系统中 heap 和 stack 的区别 什么是基于注解的切面实现 什么是 对象/关系 映射集成模块 什么是 Java 的反射机制
|
7月前
|
存储 算法 Java
[Java 源码] 秋招常被问到 GC 相关的几道面试题(集中在分配以及回收)
[Java 源码] 秋招常被问到 GC 相关的几道面试题(集中在分配以及回收)
|
7月前
|
监控 Java 程序员
GC(垃圾处理机制)面试加薪必备
GC(垃圾处理机制)面试加薪必备
63 0
|
算法 Java 大数据
第二季:6.GC垃圾回收算法和垃圾收集器的关系?分别是什么请你谈谈【Java面试题】
第二季:6.GC垃圾回收算法和垃圾收集器的关系?分别是什么请你谈谈【Java面试题】
95 0
|
算法 Java
第二季:1.JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots【Java面试题】
第二季:1.JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots【Java面试题】
105 0
|
监控 算法 Java
常问的GC相关面试题(一)
常问的GC相关面试题(一)
|
Java 程序员
Java 面试题:GC 是什么?为什么要有 GC?
Java 面试题:GC 是什么?为什么要有 GC?
201 0