JVM
文章平均质量分 92
StreakyPorker
这个作者很懒,什么都没留下…
展开
-
深入理解JVM(3) 虚拟机类加载模式
类加载的生命周期 有且只有以下需要立即初始化的情况: 用new实例化对象时、读取或设置一个直接定义(非继承)的类型的静态非常量字段时、调用类的直接定义(非继承)的一个静态方法时 使用java.lang.reflect包的方法对类型进行反射调用的时候,如果类型没有进行过初始化,则需要先触发其初始化(-XX:+TraceClassLoading参数也会导致子类加载) 初始化子类时要先初始化父类 先初始化带main的主类 当使用JDK 7新加入的动态语言支持时,如果一个java.lang.invoke.Met原创 2021-03-23 00:22:09 · 90 阅读 · 0 评论 -
深入理解JVM(2) 垃圾回收机制原理
GC的基本思想 C++的内存回收机制是依靠程序员手动实现的,但是面对智能指针循环引用的情况也需要一些特殊机制才能解决,Java中循环引用的情况也相当复杂,所以垃圾回收机制的基本思路都是通过可达性分析实现的。 这个算法的基本思路就是通过一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为“引用链”(Reference Chain),如果某个对象到GC Roots间没有任何引用链相连,或者用图论的话来说就是从GC Roots到这个对象不可达时,则原创 2021-03-21 15:38:10 · 877 阅读 · 0 评论 -
深入理解JVM(1) Java内存模型
内存分块 两个区分点:运行时数据区与代码区、线程共享数据区与线程隔离数据区 heap是共享的,VM stack是线程隔离的 私有内容 如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地 址;如果正在执行的是本地(Native)方法,这个计数器值则应为空(Undefined) VM stack的生命周期与线程相同。VM stack有局部变量表,记录局部变量、引用和返回地址,double和long(它们的长度为64bit)占2个slot,其余占1个,但slot则是不定长的原创 2021-03-05 22:12:01 · 84 阅读 · 0 评论