Jvm相信刚刚工作的很陌生,但工作3年左右的肯定不陌生,这个时候如果不是在大厂,工作3年大多数已经跳槽过1到2次了,有的更多,每次面试相信一定会
问你JVM相关知识,可工作中真的用的上吗?90%情况这个工作年限很少用上,用上的时候也是百度一下,大多数也没真的去搞一下,我先介绍下理论知识,然后
在梳理一下实战内容
在介绍之前推荐大家阅读:《深入理解JAVA虚拟机》这本书,真的写的不错,虽然工作意义不大,不如学点微服务,框架之类,但我觉得修炼内功这个是必须要有的
1. JVM是什么
jvm是构建出来的一个虚拟计算机,用来运行.class文件的,既然是虚拟计算机,它就类似计算机的一些特性
2. JVM的组成
2.1 运行时区域: 方法区、程序计数器、虚拟机栈、Java堆、本地方法栈、运行常量池、直接内存
2.2 执行引擎
2.3 本地接口
2.4 类加载器ClassLoader:Bootstrap、Extension、Application(系统加载器)、自定义
3. 对象的创建方式
3.1 指针碰撞:内存规整情况下使用该方式
3.2 空闲列表:内存不规整情况下使用
4.对象线程安全处理的方式
4.1 本地线程分配缓存
4.2 同步处理
5.对象的布局
5.1 对象头:MarkWord、类型指针
5.2 实例数据
5.3 对齐填充
6.对象的访问方式
6.1 句柄访问:稳定的句柄地址
6.2 直接指针访问:速度快、节约开销
7. OutofMemoryError
7.1. java堆溢出
7.2. 虚拟机栈和本地方法栈溢出
7.3. 方法区和运行时常量池溢出
7.4.本机直接内存溢出
8. GC是什么
垃圾收集器
9. 对象回收方法
9.1引用计数法
9.2可达性分析法
10.垃圾收集算法
10.1 标记清除算法
10.2 复制算法
10.3 标记整理算法
10.4 分代收集法