前言:
此刻朋友们对“java垃圾回收机制面试题”都比较关心,你们都需要分析一些“java垃圾回收机制面试题”的相关文章。那么小编在网络上汇集了一些对于“java垃圾回收机制面试题””的相关内容,希望大家能喜欢,咱们一起来学习一下吧!垃圾回收主要回收的是堆内存,基于分代的思想:
内存怎么样分配
对象分配
优先在Eden区分配。当Eden区没有足够空间分配时, VM发起一次Minor GC, 将
Eden区和其中一块Survivor区内尚存活的对象放入另一块Survivor区域。如Minor
GC时survivor空间不够,对象提前进入老年代,老年代空间不够时进行Full GC;
大对象直接进入老年代,避免在Eden区和Survivor区之间产生大量的内存复制, 此
外大对象容易导致还有不少空闲内存就提前触发GC以获取足够的连续空间.
对象晋级
年龄阈值:VM为每个对象定义了一个对象年龄(Age)计数器, 经第一次Minor GC后
仍然存活, 被移动到Survivor空间中, 并将年龄设为1. 以后对象在Survivor区中每熬
过一次Minor GC年龄就+1. 当增加到一定程度(-XX:MaxTenuringThreshold, 默认
15), 将会晋升到老年代.
提前晋升: 动态年龄判定;如果在Survivor空间中相同年龄所有对象大小的总和大
于Survivor空间的一半, 年龄大于或等于该年龄的对象就可以直接进入老年代, 而无
须等到晋升年龄.
那些要收回?对象生死判定
可达性分析算法
通过一系列的称为 GC Roots 的对象作为起点, 然后向下搜索; 搜索所走过的路径
称为引用链/Reference Chain, 当一个对象到 GC Roots 没有任何引用链相连时, 即该对
象不可达, 也就说明此对象是不可用的;
在Java, 可作为GC Roots的对象包括:
1.方法区: 类静态属性引用的对象;
2.方法区: 常量引用的对象;
3.虚拟机栈(本地变量表)中引用的对象.
4.本地方法栈JNI(Native方法)中引用
的对象。
怎么回收?方法论?分代收集
新生代-标记清除法
该算法分为“标记”和“清除”两个阶段: 首先标记出所有需要回收的对象(可达性
分析), 在标记完成后统一清理掉所有被标记的对象.
怎么回收?方法论?分代收集
新生代-复制算法
该算法的核心是将可用内存按容量划分为大小相等的两块, 每次只用其中一块, 当
这一块的内存用完, 就将还存活的对象复制到另外一块上面, 然后把已使用过的内存空
间一次清理掉.
怎么回收?方法论?分代收集
老年代-标记整理算法
该算法分为“标记”和“清除”两个阶段: 首先标记出所有需要回收的对象(可达性
分析), 在标记完成后让所有存活的对象都向一端移动,然后清理掉端边界以外的内存;
实现回收?谁来做?垃圾回收器
JVM垃圾回收面试常见面试题
垃圾回收常用的算法有哪些?特点是什么?
哪几种垃圾收集器,各自的优缺点,
jvm中一次完整的GC流程(从ygc到fgc)是怎样的,
JVM垃圾回收机制,何时触发MinorGC或FullGC等操作
标签: #java垃圾回收机制面试题