java虚拟机-Java8
高枫-henu
这个作者很懒,什么都没留下…
展开
-
第二章(一) Java虚拟机结构-数据类型
这篇文章针对虚拟机的抽象描述,并不针对一个特定的Java虚拟机实现。 为了实现Java虚拟机,你仅仅需要能够读取class文件格式,并且执行里面的操作。哪些限制实现者创造力的具体细节并不是Java虚拟机规范的一部分。例如,运行时数据区域的内存结构,垃圾回收运用的算法,Java虚拟机指令的内部优化(例如转换成机器码)等这些实现细节都留给实现者去自由决断。 虚拟机规范中所有...原创 2016-01-11 22:03:01 · 139 阅读 · 0 评论 -
第二章(二) Java虚拟机结构-运行时数据区
2.5 运行时数据区域 Java虚拟机定义了各种各样的运行时数据区,在程序执行过程中使用。这其中有些数据区域是在Java虚拟机启动时创建,只有在虚拟机结束时才被销毁。还有些数据区是各个线程的,线程的数据区在线程创建时创建,随线程的结束而销毁。 2.5.1 pc寄存器 Java虚拟机支持许多线程同时执行。每一个线程都有自己的pc(程序寄存器)。在任意时点,一个线程只能执行一个方...原创 2016-01-11 22:32:07 · 98 阅读 · 0 评论 -
第二章(三) Java虚拟机结构-栈帧
2.6 栈帧 栈帧用来存储变量值、中间结果,也用来进行动态链接、返回访法值和分发异常。 栈帧在一个方法调用时创建,在方法调用完成后销毁,不管方法是正常结束,还是非正常结束(方法抛出异常)。栈帧从创建此栈帧的线程对应的虚拟机栈中分配存储空间。每个栈帧有自己的本地变量表、操作数栈以及一个指向当前方法对应类的运行时常量池的引用。 本地变量表和操作数栈的大小在编译时确定,随着...原创 2016-01-21 22:56:07 · 119 阅读 · 0 评论 -
第二章(四) Java虚拟机结构-特殊方法、异常
2.9 特殊方法 对于Java虚拟机,每一个用java语言编写的构造函数作为实例初始化方法都有一个特殊的名字:。这个名字是编译器提供的。因为不是一个正确的方法标识符,所以它是不能直接在Java编程语言中使用的。实例初始化方法只能通过Java虚拟机的invokespecial指令调用,并且只能用在未被初始化的类实例。关于实例初始化方法的访问权限可以参考Java语言规范的6.6章。 ...原创 2016-01-24 15:12:48 · 93 阅读 · 0 评论 -
第五章(一) 加载、链接、初始化-运行时常量池和启动
Java虚拟机动态的加载、链接、初始化类或接口。加载是通过特定的名字找到类或接口类型的二进制表示,根据找到的二进制表示创建类或接口的过程。链接是获得创建的类,将它们结合进Java虚拟机的运行时状态以使他们能够被执行的过程。初始化一个类或接口包括执行类或接口的初始化方法. 5.1 运行时常量池 Java虚拟机为每一个类型维续一个常量池,一种运行时的数据结构,提供类似于传统语言中符...原创 2016-01-31 15:31:00 · 110 阅读 · 0 评论