
虚拟机
helianus
这个作者很懒,什么都没留下…
展开
-
笔记-Java基础之Hotspot虚拟机编译对象与触发条件
程序在运行过程中会被即时编译器编译的“热点代码”有两类,既: 1.被多次调用的方法。 2.被多次执行的循环体。 前者很好理解,一个方法被调用得多了,方法体内代码执行的次数自然就多了,它成为“热点代码”是理所当然的。而后者则是为了解决一个方法只被调用一次或少数的几次,但是方法体内部存在循环次数较多的循环体的问题,这样循环体的代码也被重复执行多次,因此这些代码也应...原创 2019-07-01 15:17:21 · 278 阅读 · 0 评论 -
笔记-Java基础之虚拟机概述
Java语言的“编译器”其实是一段“不确定”的操作过程,因为它可能是指一个前端编译器(其实叫“编译器的前端”更准确一些)把*.java文件转变成*.class文件的过程,也可能是指虚拟机的后端运行期编译器(JIT编译器,Just In Time Compiler)把字节码转变成机器码的过程,还可能是指使用静态提前编译器(AOT编译器,Ahead Of Time Compiler)直接把*....原创 2019-07-07 15:39:01 · 133 阅读 · 0 评论 -
笔记-Java基础之类加载器
虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。类与类加载器 对于一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。这句话可以表达的更通俗一些:比较两...原创 2019-06-26 20:50:49 · 104 阅读 · 0 评论 -
笔记-Java基础之类加载的过程(加载、验证、准备、解析、初始化)
加载“加载”是类加载(Class Loading)过程的一个阶段,两者并不是一个概念,在加载阶段,虚拟机会完成以下三件事情:1.通过一个类的全限定名来获取定义此类的二进制字节流。2.将这个字节流所代表的静态存储结果转化为方法区的运行时数据结构。3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。虚拟机规范的这3点要求其实并不...原创 2019-06-24 21:04:06 · 220 阅读 · 0 评论 -
笔记-Java基础之语法糖的味道
泛型与类型擦除 泛型是JDK1.5的一项新增特性,他的本质是参数化类型(Parametersized Type)的应用,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。 泛型技术在C#和Java之中的使用方式看似相同,但实现上却有着根本性的分歧,C#里面泛型无论在程序源码中、编译后的IL中(Interme...原创 2019-06-30 20:57:58 · 253 阅读 · 0 评论 -
笔记-Java基础之Hotspot虚拟机解释器与编译器
在部分的商用虚拟机(Sun HotSpot、IBM J9)中,Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这个代码认定为"热点代码",为了提高热点代码的执行,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time Compile...原创 2019-07-01 13:38:31 · 769 阅读 · 0 评论