JVM
nvnnv
这个作者很懒,什么都没留下…
展开
-
读书笔记JVM探秘之五:字节码执行引擎(重载+重写原理)
虚拟机是基于栈的体系结构,字节码执行依靠栈来操作。栈虚拟机中有两种栈,虚拟机栈(运行栈)和操作数栈,前者线程私有,作为运行方法的载体,以栈帧为单位;后者在栈帧中,每个栈帧带有一个操作数栈,作为执行字节码的载体。栈帧一个方法在运行栈中被表达成一个栈帧,栈顶帧为当前执行方法,它的大小在编译期就被完全确定(其他体系结构的栈帧也是这样的)。栈帧结构1、局部变量表,存储参数列表、局部(临时)变量,以slot为原创 2016-05-03 19:03:26 · 603 阅读 · 0 评论 -
读书笔记JVM探秘之三:Class文件
什么是class文件恩,开始写。 众所周知,JAVA源文件会被编译成class文件,虚拟机运行的也是class文件。JVM从发布之初就一直贯彻的两个特性,其一,平台无关性,其二,语言无关性。 并不是只有java代码才可以被编译成class文件,仅仅只是虚拟机运行的是class文件,这不是因果关系。换言之,只要可以编译成class文件,任意语言都可以在虚拟机上运行(注意:理论上是这样的)。 cl原创 2016-04-18 22:18:21 · 391 阅读 · 0 评论 -
读书笔记JVM探秘之四:类加载器
类加载器并不是JVM固定的一部分,之所以这么说是因为JVM内部有他们自己实现的类加载器,这表明:外部的类加载器是可以自定义的。对于JAVA来说,没有什么不可能,就算去写自己的VM也完全没问题。 类加载器是非常重要的一部分,它描述了class文件是如何进入虚拟机内存的,为此产生了哪些行为等一系列重要的问题。JAVA本身提供了三个类加载器,分别应对不同等级的类文件(比如说VM内部的类文件和你写的类文件原创 2016-04-22 19:30:24 · 338 阅读 · 0 评论 -
读书笔记JVM探秘之六:编译器的那些事儿
前期编译java源代码——>JVM字节码(class文件) 大致的编译过程: 解析与填充符号表——>注解处理——>分析与字节码生成 具体就是词法分析、语法分析、构建语法树等过程,此阶段几乎不会对代码做出优化,撑死就是做一些冗余处理,比如 int a = 3 + 1; 改成 int a = 4;等。 值得一说的是解语法糖的过程,java有大量的语法糖,泛型、自动装/拆箱、变长参数、foreac原创 2016-05-08 20:27:10 · 551 阅读 · 0 评论