JAVA内存区域
- 程序计数器
- JAVA虚拟机栈
-
- 栈帧
-
-
- 局部变量表
-
-
-
- 操作数栈
-
-
-
- 动态链接
-
-
-
- 方法出口
-
名词解释
- 程序计数器:当前线程所执行执行的字节码的行号指示器
- JAVA虚拟机栈: 为虚拟机执行JAVA方法服务
- 本地方法栈:为虚拟机使用到的Native方法服务
JAVA 中可作为GC ROOT对象:
- 栈中引用的对象;
- 方法区中静态属性引用的对象;
- 方法区中常量引用的对象;
- 本地方法栈引用的对象。
常用的GC算法
- 标记清除算法;
- 复制算法;
- 标记整理算法;
- 分代收集算法
分代回收策略
- 新生代(eden区+2个survivor区)
- 老年代
- 永久代
常见的垃圾收集器
问题1:什么样的对象能够进入老年代?
- 大对象(放不进新生代)
- 年龄超过-XX:MaxTenuringThreshold参数
- survivor区中相同年龄大小总和超过survivor空间的一半的对象
问题2:打印GC信息?
- -verbose:gc
- -xx:+PrintGCDetail