
深入理解JVM
万无引力 WY
何以解忧 唯有专注
展开
-
第8章-虚拟机字节码执行引擎
第8章-虚拟机字节码执行引擎 运行时栈帧结构 栈帧是虚拟机运行时数据区的java虚拟机栈的基本单位。栈帧是支持虚拟机进行方法调用和方法执行的数据结构,栈帧中存储了方法的局部变量表和操作数占、动态链接、方法返回地址等信息。每一个java方法从开始调用到执行结束,都对应着一个栈帧在虚拟机栈里面的入栈到出栈的过程。 栈帧中需要多大的局部变量表、多深的操作数栈,在编译期间都已经完全确定下来了。与运行期间的变量数据无关。 在活动的当前线程中,只有位于栈顶的栈帧才是有效地,被称为当前栈帧,这个栈帧相关联的方法是当前原创 2020-09-03 16:29:38 · 137 阅读 · 0 评论 -
第8章-虚拟机字节码执行引擎
第8章-虚拟机字节码执行引擎 运行时栈帧结构 栈帧是虚拟机运行时数据区的java虚拟机栈的基本单位。栈帧是支持虚拟机进行方法调用和方法执行的数据结构,栈帧中存储了方法的局部变量表和操作数占、动态链接、方法返回地址等信息。每一个java方法从开始调用到执行结束,都对应着一个栈帧在虚拟机栈里面的入栈到出栈的过程。 栈帧中需要多大的局部变量表、多深的操作数栈,在编译期间都已经完全确定下来了。与运行期间的变量数据无关。 在活动的当前线程中,只有位于栈顶的栈帧才是有效地,被称为当前栈帧,这个栈帧相关联的方法是当前原创 2020-09-03 16:23:18 · 202 阅读 · 0 评论 -
第7章-类加载机制
第7章-类加载机制 类加载发生在虚拟机之外 1 概述 1.1 什么是类加载机制 虚拟机把描述类的数据从Class文件加载到内存中,并对数据进行校验、转换解析、和初始化,最终形成可以被java虚拟机直接使用的java类型,这就是类加载机制。 类加载机制发生在java程序运行阶段 1.2 类加载的时机 当JVM第一次主动引用类的时候,加载该类。但当是被动引用的时候并不会引发类的加载操作。也就是说,JVM对于类的加载,并不是一口气直接加载所有的类,只是在用到某个类的时候,才对此类进行加载。 1.3 主动引用和被动原创 2020-09-03 16:17:50 · 137 阅读 · 0 评论 -
第3章-垃圾收集器和内存分配策略
第3章-垃圾收集器和内存分配策略 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Hz7NvWZ-1599120408711)(https://github.com/TangBean/understanding-the-jvm/raw/master/Ch1-Java%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E6%9C%BA%E5%88%B6/pic/%E5%88%A4%E6%96%AD%E5%AF%B9%E8%B1%A1%E7%9A%84%E7原创 2020-09-03 16:11:40 · 199 阅读 · 0 评论 -
第2章-Java内存区域和内存溢出异常
第二章·Java内存区域和内存溢出异常 1.JDK8中的JVM内存布局图 1.1程序计数器 简介: 程序计数器是一块比较小的内存空间,可以看作是当前线程所执行字节码指令的行号指示器。 字节码解释器在工作时通过改变这个计数器的数值,完成字节码指令的跳转,从而完成分支、循环、跳转等操作。 多线程与线程私有: JVM中多线程的实现,是通过线程之间轮流切换并分配处理器执行时间来完成的,所以在视觉上,感觉是同步的。实际上,在特定时刻,只有一个线程在执行。 因此,为了保证线程恢复之后,能够从上次的断点位置,继续执行原创 2020-09-03 16:06:15 · 218 阅读 · 0 评论