前言大纲JVM结构类加载过程
类加载器的加载过程类加载器的分类(只用两种)引导类,扩展类,系统类加载器分别做什么的?用户自定义的类加载器双亲委派机制双亲委派模式的优势扩展类加载器的parent为null,为什么父类加载器是启动类加载器破坏双亲委派机制的例子沙箱机制(自定义String会如何执行) 运行时数据区
java内存模型和java内存布局的区别?运行时数据区的结构分布 / java内存结构程序计数器虚拟机栈本地方法栈堆方法区 执行引擎
为什么说JAVA是半编译半解释型语言??热点代码探测何时使用JIT编译器 垃圾收集器和内存分配策略
判断对象是否存活的算法引用的分类(强-软-弱-虚)finalize()方法垃圾收集算法HotSpot的算法实现细节经典的垃圾回收器(重点是CMS和G1)Minor GC和Full GC触发条件Java虚拟机内存OOMJava 如何防止OOM的 ( 回答了 GC 的分代回收 与 内存分配策略 )什么时候执行STOP THE WORLD?不同版本垃圾回收器的默认搭配 JVM调优
如果web服务器突然出现频率很高的FullGC,可能是什么原因?你会怎么去排查呢?jvm排查命令如何定位OOM假如现在在同一台机器上开两个java项目,有几个java虚拟机?常用的JVM参数
前言最近在准备面试整理了份JVM的脑图,不够的话可以评论区一起补充!共同进步大纲 JVM结构
真个JVM的结构 jdk和jre和jvm的关系类加载过程 类加载器的加载过程 类加载器的分类(只用两种) 引导类,扩展类,系统类加载器分别做什么的? 用户自定义的类加载器 双亲委派机制 双亲委派模式的优势 扩展类加载器的parent为null,为什么父类加载器是启动类加载器 破坏双亲委派机制的例子 沙箱机制(自定义String会如何执行) 运行时数据区 java内存模型和java内存布局的区别? 运行时数据区的结构分布 / java内存结构 程序计数器
为什么使用PC寄存器记录当前线程执行地址 PC寄存器为什么会被设定为线程私有虚拟机栈
什么是虚拟机栈 虚拟机栈的生命周期 作用 优点 原理 栈开发中遇到的异常 栈的内部结构 局部变量表 操作数栈 动态链接 方法返回地址 附加信息本地方法栈
JNI本地方法接口堆
内存细分 如何设置内存大小 新生代和老年代 会先分配空间过程 对象分配内存的特殊分配过程 内存分配策略总结(空间分配担保策略+动态年龄判断) Minor GC 和Major GC 和 Full GC的对比[面试重点] 有没有单独对老年代进行的GC 为什么堆空间使用分代思想 堆是分配对象存储的唯一选择吗? 逃逸分析-栈上分配 区分栈上分配和栈上替换 逃逸分析-同步省略 逃逸分析-标量替换 堆中的对象的内存布局[面试] (对象头+示例数据+对齐填充) 从JVM的角度看String对象+intern()方法 G1中的String去重操作 String为什么不可变方法区
永久代和元空间的区别 运行时常量池 方法区演进细节,jdk6-jdk7-jdk8变化[面试 会问不同jdk方法区有什么变化] 为什么永久代被替换成了元空间?? [面试] StringTable为什么要放到堆? 静态变量存在哪? 方法区的垃圾回收执行引擎 为什么说JAVA是半编译半解释型语言?? 热点代码探测何时使用JIT编译器 垃圾收集器和内存分配策略 判断对象是否存活的算法
引用计数算法 可达性分析算法引用的分类(强-软-弱-虚) finalize()方法 垃圾收集算法
分代收集理论(思想) 1.标记-清除算法 2.标记-复制算法 (Appel式回收的应用) 3.标记-整理算法(吞吐量概念) 3.1标记清除和标记整理的权衡HotSpot的算法实现细节
1.根节点枚举(Hotspot的OopMap快速找到CGROOT) 2.安全点(安全点的选择 + HotSpot汇编侧面上实现原理) 3.安全区域 4.记忆集和卡表(用于解决跨代引用的临时CGROOT) 5.写屏障(写前or后屏障 + 伪共享问题) 6.并发可达性分析(节点消失问题,和解决方案)经典的垃圾回收器(重点是CMS和G1)
1.不同的垃圾收集器的搭配 2.Serial收集器 3.serial old收集器 4.ParNew收集器(并行) 5.Parrallel Scavenge(并行,吞吐量优先,自适应内存调节) 6.parallel old收集器(并行,吞吐量优先) 7.CMS(并发,低延迟,淘汰的原因缺点)**重点 8.G1收集器(停顿预测模型+实现原理,何为价值) G1区域间存在跨域的引用对象怎么办? G1并发标记的阶段如何保证收集线程和用户线程互不干扰 G1如何建立可靠的停顿预测模型? G1的运作过程大概分为四个步骤**重点 G1和CMS的比较**重点 9.ZGC收集器Minor GC和Full GC触发条件 Java虚拟机内存OOM Java 如何防止OOM的 ( 回答了 GC 的分代回收 与 内存分配策略 ) 什么时候执行STOP THE WORLD? 不同版本垃圾回收器的默认搭配 JVM调优 如果web服务器突然出现频率很高的FullGC,可能是什么原因?你会怎么去排查呢? jvm排查命令 如何定位OOM 假如现在在同一台机器上开两个java项目,有几个java虚拟机? 常用的JVM参数



