随笔分类 -  jvm

摘要:Java语言的“编译期”其实是一段“不确定”的操作过程,因为它可能是指一个前端编译器(叫“编译器的前段”更准确)——把*.java文件转变成*.class文件的过程; 也可能是虚拟机的后端运行期编译器(JIT)把字节码转变成机器码的过程;还可能是指静态提前编译器(AOT编译器)直接把*.java文件 阅读全文
posted @ 2019-04-29 16:36 青青子衿J
摘要:动态类型语言 动态类型语言的关键特征是它的类型检查的主体过程是在运行期而不是编译期。 举例子解释“类型检查”,例如代码: 假如这行代码是在Java语言中,并且变量obj的静态类型为java.io.PrintStream,那么变量obj的实际类型就必须是PrintStream的子类才是合法。否则,ob 阅读全文
posted @ 2019-04-27 22:54 青青子衿J
摘要:“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上,而虚拟机的执行引擎是 由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。 运行栈帧结构 栈帧,是用于支持 阅读全文
posted @ 2019-04-26 16:12 青青子衿J
摘要:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 在Java语言里,类型的加载、链接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销。但是会为Java应用程序提 阅读全文
posted @ 2019-04-25 19:25 青青子衿J