JVM原理

JVM预览垃圾回收器(GC)即时编译(JIT)JVM 运行时JVM结构编译与JVM执行流程图类加载链接验证( Verif)解析(Resolution )准备( Prep)加载( LOAD )使用( Use)卸载( UnLoad)初始化( Init)自定义类加载启动类加载器扩展类加载器应用程序类加载器自定义类加载Class Loader 关系与顺序JVM执行引擎局部变量表局部变量表操作数栈操作数栈操作数栈共享数据局部变量共享数据动态地址返回地址 VM StackStack FrameCStack Frame1Stack Frame2Stack Frame3解释执行编译执行JMMJava线程工作内存WSave和Load操作主内存MJava线程工作内存W工作内存WJava线程readlock1.原子性loadunlock2.可见性usewrite3.有序性assignstoreJIT1.被多次调用的方法2.被多次执行的循环体1.采样的热点探测2.计数器热点探测Server CompilerClient Compiler1.无用代码消除2.循环展开3.循环表达式外提4.公共子表达式消除5.产量传播6.基本快排序7.方法内联8.逃逸分析9.栈上分配10.同步消除11.标量替换.........GC收集器 类型线程数并发/独占内存碎片分代描述Seriall收集器串行独占ParNew收集器并行独占Prallel Scavenge收集器并行独占CMS收集器并行并发G1收集器并行并发Old/Young验证4步1.文件格式验证2.元数据验证3.字节码验证(数据流、控制流分析) a.类型推导验证(版本号小于50) b.类型检查验证(版本号大于等于50) 属性表“StackMapTable”4.符号引用验证11.引用计数算法无法解决java 中相互循环引用,如:A.b = b ;B.a = a;2.GC Root 确定1) 虚拟机栈中引用的对象2)方法区中的类静态属性引用的对象3)方法区中常量引用的属性4) 本地方法栈中Native方法的引用的对象3.标记-清除 1)效率较低 2)空间问题,产生大量内存碎片4.复制算法 1)内存空间减半5.分代回收算法 1)内存分块:Young、Old

文档评论(0)

1亿VIP精品文档

相关文档