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个字节)
<br>
Class Pointer(8个字节)
实例数据
Padding对齐(<font color="#c41230">读取对象时按照块读取的,也就是8个字节的倍数</font>)
数组
对象头
MarkWord(8个字节)
Class Pointer(8个字节)
数据长度(4个字节)
实例数据
Padding对齐
垃圾回收器
Serial 年轻代 串行回收<br>
PS 年轻代 并行回收<font color="#f15a23">(1.8默认的垃圾回收:PS + ParallelOld)</font>
ParNew 年轻代 配合CMS的并行回收
SerialOld
ParallelOld
ConcurrentMarkSweep 老年代 并发的, 垃圾回收和应用程序同时运行,降低STW的时间(200ms)
G1(10ms)
ZGC (1ms) PK C++
Shenandoah
Eplison
垃圾收回算法
标记清除
优点:简单
缺点: 位置不连续 产生碎片
复制算法
优点:没有碎片
缺点:浪费空间(因为要将内存分成2部分,然后将一部分的对象复制到另外一部分)
标记整理
优点:没有碎片,也不会浪费空间
缺点:存活对象多的话,效率偏低(两遍扫描)
分代收集
年轻代:大量对象死去,少量存活,采用复制算法
老年代:存活对象高,回收比较少,采用MC或者M5
分支主题
0 条评论
下一页