java虚拟机
felix_wangq
这个作者很懒,什么都没留下…
展开
-
Java虚拟机之内存
1 概述Java内存包含以下几部分: 方法区/虚拟机栈/本地方法栈/堆/程序计数器 程序计数器:每个线程都有一个独立的程序计数器,即程序计数器是线程私有的。用以实现多线程切换时恢复状态。其生命周期与线程相同。 虚拟机栈:Java虚拟机栈也是线程私有的,其生命周期与线程相同,其描述的是Java方法执行模型,由-Xss设置。内存不足可能造成StackOverflowError/OutOfMe原创 2016-01-07 15:21:27 · 407 阅读 · 0 评论 -
Java类加载机制
1 概述虚拟机将class文件加载进内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的过程,为Java类加载机制。Java加载机制的生命周期:加载 验证 准备 解析 初始化 使用 卸载 7个阶段。在Java语言中,类的加载,连接和初始化都是在程序运行期间完成的。2 初始化有且仅有以下情况下,若类没有初始化过,必须初始化: 遇到new getstatic putst原创 2016-01-26 09:31:50 · 579 阅读 · 0 评论 -
Java虚拟机之内存模型
1 概述Java内存模型(JMM)是Java虚拟机规范中定义的一种用于屏蔽各种硬件和操作系统的内存访问差异,以实现Java平台到达统一访问内存的效果。Java内存模型的目标是定义程序中各个变量(指实例字段,静态字段,构成数组对象的元素;不包括局部变量,方法参数与异常处理参数这些线程私有变量)的访问规则。即虚拟机中变量存储到内存和从内存取出的规则。JMM属于语言级的内存模型,它确保在不同的编译器和不同原创 2016-01-26 09:33:26 · 419 阅读 · 0 评论 -
Java虚拟机之字节码执行引擎
1 概述虚拟机执行引擎是Java虚拟机最核心的部分之一,其目的是实现:输入字节码文件,将字节码解析或等效处理后,执行并输出结果。其中两种执行方式:解释执行和编译执行。2 运行时栈帧结构栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,他是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接、原创 2016-01-26 09:35:47 · 1408 阅读 · 0 评论 -
Java虚拟机之指令集
1 概述Javac编译后的java文件的Code部分最终会保存在class文件的属性表集合的Code字段中。Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成。对于大部分为与数据类型相关的字节码指令,他们的操作码助记符中都有特殊的字符来表明专门为哪种数据类型服务:i代表对int类型的数据操作,原创 2016-01-08 18:09:12 · 2838 阅读 · 0 评论 -
Java虚拟机之类文件结构
1、概述Java编译生成的class文件是运行在JVM虚拟机上的标准。2. ClassFileclass文件是一组以8位字节为基础单位的二进制流。各个数据项目严格排序,没有任何分隔。遇到大于8位的情况,会分隔然后将高8位放在前面。class文件结构定义如下ClassFile { u4 magic; u2 minor_version;原创 2016-01-13 19:50:55 · 1053 阅读 · 0 评论