随笔分类 -  JVM

摘要:方法调用 确定被调用方法的版本 包括解析调用和方法分派 解析调用 对于在那些"编译器可知,运行期不可变"的方法,主要包括静态方法和私有方法。前者与类型直接关联,后者外部不可访问,决定了它们都不能通过继承或者别的方式重写出其它版本,适合在类加载阶段进行解析。 对应的字节码指令:invokestatic 阅读全文
posted @ 2021-06-18 16:19 keepkeep 阅读(70) 评论(0) 推荐(0) 编辑
摘要:自动内存管理 特指java堆、方法区两个区域的内存的分配与回收。 判断对象是否"存活" 引用计数算法 在对象中添加一个引用计数器,每当一个地方引用它时,计数器加一;当引用失效时,计数器减一;在任何时候,计数器为0的对象不可能再被使用。 主流的java虚拟机中没有使用引用计数算法来管理内存,因为有很多 阅读全文
posted @ 2021-03-16 19:51 keepkeep 阅读(96) 评论(0) 推荐(0) 编辑
摘要:对象的内存布局 在HotSpot虚拟机中,对象在堆内存中的存储布局可以划分为三个部分:对象头Header、实例数据Instance Data和对齐填充Padding 对象头 HotSpot虚拟机的对象头有两类信息: 对象自身的运行时数据 类型指针 对象自身的运行时数据: 哈希码、GC分代信息、锁状态 阅读全文
posted @ 2021-03-09 15:28 keepkeep 阅读(79) 评论(0) 推荐(0) 编辑
摘要:对象的创建 当虚拟机遇到一条 字节码new指令时, 检查这个指令的参数是否在常量池中定位到一个类的符号引用; 并检查这个符号引用代表的类是否已被 加载、解析、初始化过,如过没有,必须执行相应的类加载过程; 在类加载检查通过之后,虚拟机将会为新生对象分配内存 对象所需的内存在类加载后就可以完全确定; 阅读全文
posted @ 2021-03-09 15:16 keepkeep 阅读(40) 评论(0) 推荐(0) 编辑
摘要:运行时数据区 程序计数器 也叫PC寄存器 它是一块较小的内存空间; 当前线程执行的字节码的行号指示器,是程序控制流的指示器; 每个线程都有一个独立的程序计数器,线程间的计数器互不影响,独立存储,属于“线程私有”的内存; 如果线程正在执行的是一个java方法,那么程序计数器记录的应该是正在执行的虚拟机 阅读全文
posted @ 2021-03-09 14:26 keepkeep 阅读(53) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示