JVM
2020-04-07 14:41:12 0 举报
AI智能生成
JVM基础知识
作者其他创作
大纲/内容
垃圾判断算法
引用计数
根可达性算法
线程栈变量
本地方法栈
常量池
静态变量
三色标记
颜色指针
对象分配过程
类加载
双亲委派
启动类加载器(Bootstrap ClassLoader):加载<JAVA_HOME>/lib下的类
扩展类加载器(Extension ClassLoader): 加载<JAVA_HOME>/lib/ext下的类
系统类加载器/应用程序类加载器(Application ClassLoader):程序默认加载,ClassLoader.getSystemClassLoader返回的就是它
优点:可以保证一个类只呗加载一次,安全
缺点:无法加载第三方的类(实现了JDK定义接口的类)
破坏双亲委派
SPI机制(Service Provider Inteface)
可以实现加载第三方的类,并且JDK无需加载实现接口所依赖的包,插拔式
GC调优
常用工具
jmap
jstat
jconsole
visual vm
命令
子主题
子主题
子主题
子主题
内存模型
对象模型
普通对象
对象头
MarkWord(8个字节)
Class Pointer(8个字节)
实例数据
Padding对齐(读取对象时按照块读取的,也就是8个字节的倍数)
数组
对象头
MarkWord(8个字节)
Class Pointer(8个字节)
数据长度(4个字节)
实例数据
Padding对齐
垃圾回收器
Serial 年轻代 串行回收
PS 年轻代 并行回收(1.8默认的垃圾回收:PS + ParallelOld)
ParNew 年轻代 配合CMS的并行回收
SerialOld
ParallelOld
ConcurrentMarkSweep 老年代 并发的, 垃圾回收和应用程序同时运行,降低STW的时间(200ms)
G1(10ms)
ZGC (1ms) PK C++
Shenandoah
Eplison
垃圾收回算法
标记清除
优点:简单
缺点: 位置不连续 产生碎片
复制算法
优点:没有碎片
缺点:浪费空间(因为要将内存分成2部分,然后将一部分的对象复制到另外一部分)
标记整理
优点:没有碎片,也不会浪费空间
缺点:存活对象多的话,效率偏低(两遍扫描)
分代收集
年轻代:大量对象死去,少量存活,采用复制算法
老年代:存活对象高,回收比较少,采用MC或者M5
分支主题
0 条评论
下一页