JVM学习笔记3:类加载

知识点

  • 基本步骤:经过加载、链接以及初始化三大步骤。其中,链接过程中同样需要验证;而内存中的类没有经过初始化,同样不能使用。
  • 引用类型与CLR基本一致,泛型会被编译为特定类型的代码。类和接口是字节码。数组类是由 Java 虚拟机直接生成的,这个似乎没有CLR中对标的东西。
  • 加载用的字节流可以来自java编译后的class,也可以是网络比如网页中内嵌的小程序 Java applet。字节流我理解就是IL,而且从结果看也确实就是这个东西。

JVM学习笔记2:类型

Boolean

  • Java中的Boolean类型在JVM中映射为int类型。“true”被映射为整数 1,而“false”被映射为整数 0。因此,将原本声明为 boolean 类型的局部变量,赋值为除了 0、1 之外的整数值,在 Java 虚拟机看来是“合法”的。

  • 对于存储 boolean 数组的字节码,Java 虚拟机需保证实际存入的值是整数 1 或者 0。

  • 对于下面的代码来说,第一个if是true,第二个是false。因为第一个是在true是1的情况下,等于问的是“吃过几碗饭”,而第二个if是问“吃了一碗饭吗”。

JVM学习笔记1:概述

JVM解决什么问题

  • JVM在我的理解与CLR是一回事,本身还是为了解决java代码无法直接编译为机器码。
  • 对标C#,类型的动态推导等功能是在运行时做的,因此无法做到AOT。就需要虚拟机来做这个事情了。
  • 如虚函数实现多态这样的情况,JVM中可以简单的获得当前应该调用哪个实现函数,从而优化代码的执行。
  • 最后,使用虚拟机可以做到代码不考虑具体在哪个平台运行的问题,实现跨平台使用。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×