jvm基础+调优+面试题
JVM学习第一天
java程序员在学学习开发中遇到的问题!!!!(是不是很有同感)!!!
虚拟机概述
生命周期
JVM发展历程
类加载器的作用
类的加载过程
1.加载(Loading)
2.连接(Linking)
3.初始化(Initialization)
类加载器分类
PC寄存器(程序计数器)
PC寄存器面试题
运行时数据区
内存中的栈和堆
栈
特点:先进后出
队列:先进先出
栈中结构:
栈内存溢出;自己掉自己
堆
对象分配过程
内存分配策略
堆空间参数设置
总结
堆不是分配对象的唯一选择,经过逃逸分析逃逸后的对象可以分配在栈上,但是目前逃逸分析技术并不成熟,无法保证逃逸分析的性能消耗一定能高于他的消耗。所有目前来说所有的对象分配还是在堆上
方法区
常量池
常见面试题
创建对象的步骤
String
面试题
垃圾回收GC
常用的垃圾回收算法
标记阶段:对象存活判断
引用计数算法(java没有使用,容易内存泄漏)
可达性分析算法(java选择)
对象的finalization机制
清除阶段
标记清除算法
复制算法
标记压缩算法
其他
分代收集算法
增量收集算法、分区算法
引用(强引用,软引用,弱引用,虚引用)
强引用(只要有引用,打死不回收,哪怕oom)
软引用(内存不够即回收)
弱引用(发现即回收)
虚引用(唯一目的就是能在这个对象被收集器回收时收到一个系统通知。)
GC回收器
小结
GC优化
//PicGo/image-20201014164714582.png" alt=“image-20201014164714582” style=“zoom:67%;” />
小结
[外链图片转存中…(img-gwY8iFVN-1602665665148)]