JVM
时代在找码
半生戎马,码上生涯。
知其然,知其所以然
展开
-
JVM==4>运行时数据区
JVM的运行时数据区包括:程序计数器,java虚拟机栈,方法区,堆内存 ,栈内存,五部分 虚拟机栈(线程栈):虚拟机栈是线程私有的,随着线程的生灭而生灭. /** * java虚拟机栈 */ public class Math{ public static final int initData=666; public int compute(){ //一个方法对应一块栈帧的内存区域(当线程运行到方法上的时候就会在虚拟机栈上创建一个栈帧) int a = 1;原创 2020-08-19 10:23:20 · 115 阅读 · 0 评论 -
JVM==3>JVM的架构模型
java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构. 基于栈的指令集架构的特点: 设计和实现更简单,适用于资源受限的系统 避开了寄存器的分配难题;使用了零地址的指令方式分配 指令流中的指令大部分都是零地址指令,其执行过程依赖于操作栈,指令集更小,编译器容易实现 不需要硬件支持,可移植性好,更好实现跨平台. 基于寄存器的指令集架构:比如传统的PC以及安卓的Davik虚拟机.有点事性能更优秀 **零地址的指令:**一般我们操作指令都是需要两部分(一部分是地原创 2020-08-12 18:50:56 · 106 阅读 · 0 评论 -
JVM==2>Java代码的执行流程
Java代码的执行流程: 运行逻辑解释: java源码经过前端编译器(比如idea),生成字节码,然后加载到java虚拟机上.经过java虚拟机的解释执行,转换为机器指令,并被操作系统识别运行. 操作系统只能识别机器指令 一段程序写好后需要经过两次编译:一次是将代码编译为字节码 ,一次是将字节码编译为机器指令. ...原创 2020-08-12 18:18:52 · 139 阅读 · 0 评论 -
JVM==1>JVM的整体结构
(HotSpot VM)JVM虚拟机的整体流程图: java代码被类的加载器加载进入运行时数据区,从运行区出来后,便要使用执行引擎的解释器进行解释运行 运行时方法区主要包括方法区,堆内存,java虚拟机栈,本地方法栈,程序计数器,五部分组成,其中方法区与堆内存是线程共享的,其他的都是线程私有的. 执行引擎充当了将高级语言翻译为机器语言的翻译者,包括:解释器,JIT即时编译器,垃圾回收器;(JIT编译器将一些经常使用的代码进行提前编译) ...原创 2020-08-12 18:00:48 · 130 阅读 · 0 评论