2020年面试题总结

请描述你对GC的理解 ?

1、Java 中为什么会有 GC 机制呢?

• 安全性考虑; -- for security.

• 减少内存泄露; -- erase memory leak in some degree.

• 减少程序员工作量。 -- Programmers don't worry about memory releasing.

2、 对于 Java 的 GC 哪些内存需要回收 ?
内存运行时 JVM 会有一个运行时数据区来管理内存。GC 主要进行回收的内存是 JVM 中的方法区和堆。

但方法区和堆就不同了,一个接口的多个实现类需要的内存可能不一样,我们只有在程序运行期间才会知道会创建哪些对象,这部分内存的分配和回收都是动态的, GC 主要关注的是这部分内存。

3. Java 的 GC 什么时候回收垃圾?

对于堆中的对象,主要用可达性分析判断一个对象是否还存在引用,如果该对象没有任何引用就应该被回收。而根据我们实际对引用的不同需求,又分成了 4 中引用,每种引用的回收机制也是不同的。
对于方法区中的常量和类,当一个常量没有任何对象引用它,它就可以被回收了。而对于类,如果可以判定它为无用类,就可以被回收了。
 

发布了95 篇原创文章 · 获赞 20 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_40993412/article/details/104024029