引出面试问题
1、什么是JVM(java virtual Machine )?
JVM 是 JAVA class 编译器,在不同的底层运行 例如linux、windows运行。
下图关系:
image.png
2、为什么要学习JVM?
在使用JAVA编程中,更好避开编程中 涉及到 JVM 坑。更好理解 JAVA编程对于对象实践。(例如 什么 bean 不会被回收,什么时候回收、回收过程)
堆 存储对象 应用对象
栈 先进后出 存储引用指针
JVM 最小单位是线程(线程 执行 需要 参数 数据、指令、返回地址(存在虚拟机栈))
3、深入 JVM 运行时数据区
数据
指令
image.png
程序技术器:线程执行当前的指令地址
虚拟机栈:存储当前线程运行时所需要的数据、指令、返回地址
image.png
本地方法栈: native 修饰的 方法
方法区:
1、分包括1.7 以前存放:类信息、常量、静态变量、JIT
2、1.7 以后 常量、JIT 放在堆里面的
head 和stack 模型
image.png
image.png
继续深入
参考:
https://www.cnblogs.com/dingyingsi/p/3760447.html
1、 什么类型的数据不可回收(不可达)
2、GC 回收算法
3、MAT 分析dump ,对代码进行调优分析
详解JVM 基础:
https://www.cnblogs.com/andy-zhou/p/5327288.html#_caption_19
网友评论