原文链接:https://blog.csdn.net/zhouhengzhe/article/details/113044800
目录:
1、类加载机制
2、双亲委派机制(先找父亲加载,不行再由儿子自己加载)
2.1、类加载器
2.2、加载器初始化过程
2.3、双亲委派机制
2.4、为什么要设计双亲委派机制?
2.5、全盘负责委托机制
2.6、自定义类加载器示例
3、tomcat怎么破解类加载机制
4、内存模型
4.1、线程私有区域
4.2、线程共享区域
5、对象的创建
5.1、对象大小与指针压缩
5.1.1、对象大小
5.1.2、什么是java对象的指针压缩?
5.1.3、为什么要进行指针压缩?
6、对象的分配过程
6.1、栈上分配
6.2、对象在Eden区分配(大部分情况,当 Eden 区没有足够空间进行分配时,出现Young GC)
6.3、大对象直接进入老年代
6.4、长期存活的对象将进入老年代
6.5、对象动态年龄判断
6.6、老年代空间分配担保机制)
7、如何判断一个类是无用的类
8、finalize()方法最终判定对象是否存活
9、常见引用类型(四大引用)
10、对象回收
10.1、引用计数法
10.2、可达性分析算法(gcroot)
11、四大垃圾回收算法
11.1、分代收集理论
11.2、标记-复制算法
11.3、标记-清除算法
11.4、标记-整理算法
12、常见oom
13、垃圾收集器
13.1、CMS(“标记-清除”算法, -XX:+UseConcMarkSweepGC(old)
13.1.1、运作过程(5大步骤)
13.1.2、三色标记法
13.1.3、concurrent model failure(浮动垃圾)
13.1.4、background/foreground collector
13.1.5、为什么G1用SATB?CMS用增量更新?
13.1.6、漏标-读写屏障(解决方案)
13.1.6.1、增量更新(Incremental Update)+写屏障
13.1.6.2、原始快照(Snapshot At The Beginning,SATB)+写屏障
13.1.6.3、并发标记时对漏标的处理方案
13.1.7、promotion failed
13.1.8、过早提升和提升失败
13.1.9、早提升的原因
13.1.10、提升失败原因
13.2、G1
13.2.1、运作流程
13.2.2、Remembered Set(记录集)/Card Table(卡表)
13.2.3、Collect Set
13.2.4、young gc的完整流程
13.2.5、Mixed GC的完整流程
13.2.6、Full GC
13.2.7、Marking bitmaps/TAMS
13.2.8、Pause Prediction Model
13.2.9、G1收集器参数设置
13.2.10、G1垃圾收集器优化建议( -XX:MaxGCPauseMills=50ms)
13.2.11、什么场景适合使用G1
13.3、ZGC
13.3.1、主要目标
13.3.2、color poin(颜色指针)
13.3.3、运作过程
13.3.4、存在的问题,怎么解决
13.3.5、安全点与安全区域
13.3.6、ZGC参数
13.3.7、ZGC触发时机
14、如何选择垃圾收集器
15、各种命令(例如100%cpu的排查、死锁的检查)
15.1、100%CPU的排查
15.2、死锁的检查
16、JIT(即时编译器)
17、逃逸分析
全部评论
(3) 回帖