Class类文件结构 Class文件是一组以8字节为基础单位的二进制流, 各个数据项目严格按照顺序紧凑排列在class文件中, 中间没有任何分隔符,这使得class文件中存储的内容几乎是全部程序运行的程序。 Java虚拟机规范规定,Class文件格式采用类似C语言结构体的伪结构来存储数据,这种结构只 ...
分类:
其他好文 时间:
2016-10-03 19:04:46
阅读次数:
159
java虚拟机规范虽然没有强制性约束在什么时候开始类加载过程,但是对于类的初始化,虚拟机规范则严格规定了有且只有四种情况必须立即对类进行初始化,遇到new、getStatic、putStatic或invokeStatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令 ...
分类:
编程语言 时间:
2016-09-24 17:34:52
阅读次数:
209
Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。如果忽略异常处理,那Java虚拟机的解释器使用下面这个伪代码的循环即可..
分类:
编程语言 时间:
2016-09-23 21:54:52
阅读次数:
324
什么是浮点数在计算机系统的发展过程中,曾经提出过多种方法表达实数。典型的比如相对于浮点数的定点数(FixedPointNumber)。在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置。货币的表达就可以使用这种方式,比如99.00或者00.99可以用于表达具有四位精度(Pre..
分类:
编程语言 时间:
2016-09-23 15:17:54
阅读次数:
339
Java虚拟机里面的异常使用Throwable或其子类的实例来表示,抛异常的本质实际上是程序控制权的一种即时的、非局部(Nonlocal)的转换——从异常抛出的地方转换至处理异常的地方。绝大多数的异常的产生都是由于当前线程执行的某个操作所导致的,这种可以称为是同步的异常。与之相..
分类:
编程语言 时间:
2016-09-23 15:16:16
阅读次数:
150
java虚拟机规范在日常工作中可以说根本用不到,但作为一个完美主义者,感觉如果进入java这个行业,对它的方方面面不去掌握的话,未免有些遗憾,我没有那些改写java语言大师们的天赋,我只能站在他们的肩膀,来掌握他们创造的技术。闲话不多说,我会认真读java虚拟机并写下自己..
分类:
编程语言 时间:
2016-09-22 18:12:08
阅读次数:
262
学习Java不可避免的要学习 Java 虚拟机,也就是 JVM,Java虚拟机规范里面规定了程序运行期间会使用到的运行时数据区。 这其中有一些是随着虚拟机的启动和退出而创建和销毁的,这些区域是线程共享的,另外还有一些是跟着个线程绑定的,随着线程的启动和退出而自动的创建和销毁,这些区域是线程私有的。 ...
分类:
其他好文 时间:
2016-08-30 12:18:10
阅读次数:
134
JVM结构、内存分配、垃圾回收算法、垃圾收集器。下面我们一一来看。 一、JVM结构 根据《java虚拟机规范》规定,JVM的基本结构一般如下图所示: 从左图可知,JVM主要包括四个部分: 1.类加载器(ClassLoader):在JVM启动时或者在类运行时将需要的class加载到JVM中。(右图表示 ...
分类:
其他好文 时间:
2016-08-23 16:31:52
阅读次数:
269
java对象在访问的时候,我们需要通过java虚拟机栈的reference类型的数据去操作具体的对象。由于reference类型在java虚拟机规范中只规定了一个对象的引用,并没有定义这个这个引用应该通过那种方式去定位、访问java堆中的具体对象实例,所以一般的访问方式也是取决与java虚拟机的类型。目前主流的访问方式有通过句柄和直接指针两种方式。1.句柄访问
使用句柄访问方式,java堆将会划分...
分类:
编程语言 时间:
2016-08-08 14:38:23
阅读次数:
186
1、Java内存模型Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内... ...
分类:
编程语言 时间:
2016-07-25 16:18:20
阅读次数:
236