联联面试java面试知识点
2021-10-11 20:26:08 8 举报
AI智能生成
联联面试
作者其他创作
大纲/内容
jvm
堆
组成
新生代 1/3
EDEN 8/10
新建对象存放的地方
经常发生minor GC
复制交换法 ***
空间不够大装不下新对象会直接放到老年代
survive From 1/10
存放上一次GC存活的对象
survive To 1/10
存放一次GC过程中存活的对象
老年代 2/3
装的老对象
满了会GC
标记清除算法***
时间长
活对象超出内存OOM
永久代
java8被元空间替代
使用本地内存
存放CLASS和元数据
GC不会清理 CLASS增多在最后导致OOM
垃圾回收与算法
引用计数法
循环引用无法回收
可达性算法
GCroots
虚拟机栈(栈帧中的本地变量表)中引用的对象
方法区中的类静态属性引用的对象
方法区中常量引用的对象
本地方法栈中JNI(即一般说的Native方法)中引用的对象
两次标记才可回收
标记清除算法
先标记后清除
造成内存碎片化,无法装大对象
复制算法
可用内存减半
效率低需要全量复制存活对象
分代收集算法
普遍使用
新 、老生代算法不同
新生代
复制算法
to 年龄大于15就会进入老年代
分区收集算法
分区单独回收
互不干扰
可以单独控制回收某个区
减少GC停顿时间
java四类应用
弱引用
weak reference
GC必定回收
强引用
最常见的引用
给一个变量赋值对象
造成OOM的主要原因
软引用
soft reference
GC时内存不够就会回收
虚应用
PhantomReference 类
必须和虚引用队列一起使用
用来跟踪对象的垃圾回收状态
垃圾回收器
新生代专用
serial
单线程
复制算法
client模式下的默认收集器
par new
多线程版本的 serial
默认cpu核数的线程
parnew thread 参数可调
server模式下的默认收集器
. Parallel Scavenge
多线程
复制算法
可以控制吞吐量
保证程序运行的时间除以运行时间和垃圾回收时间的和为一个固定比例
效率高
老年代专用
serial old
单线程
标记整理算法
Parallel Old
多线程
标记整理算法
cms收集器
停顿时间非常短
多线程
标记清除算法
运行过程
初始标记
标记与GC roots直接关联的节点
需要暂停系统
时间非常短
并发标记
继续GC root的寻找可达节点
不阻塞 和用户线程一起工作
重新标记
修订之前过程中 变动的
阻塞工作线程
并发清除
进行清除工作
不阻塞工作线程
通用
G1
最先进
标记整理没有碎片
可以控制停顿时间
固定分区
优先级回收
优先回收垃圾最多的
线程
线程生命周期
1.新建状态
2.就绪状态
3.运行状态
4.阻塞状态
5.线程死亡
Subtopic
Main Topic
Subtopic
Subtopic

收藏
0 条评论
下一页