JVM扫盲篇
第一章 JVM是啥
总结一下:JVM就是一台虚拟的机器,有自己的CPU,有自己的classLoader,有自己的寄存器,有自己的汇编语言等等。
1.JVM是一种规范,各大厂商对JVM有自己的自我实现。
(1)Hotspot oracle官方
(2)J9 IBM公司的实现
(3)TaobaoVM --hotspot深度定制版
(4)Microsoft VM --微软自己的实现
(5)LiquidVM -直接针对硬件(没有面对操作系统,直接面对硬件,效率非常高)
(5)azul zing -(商业版)最新的垃圾收集器 速度非常快,jdc是参考了azul zing的垃圾回收器的实现。
2.Hotspot 8版本以后要收费,可以用open JDK 或者用 TaobaoVM 这些开源的免费的JVM实现。
3.关于JDK与JRE与JVM的区别
第二章 Class File Format (简单介绍class文件是啥)
1.其实就是二进制字节流 (0,1)
2.在idea中安装BinEd 使用这个插件可以在idea中查看二进制文件。直接打开的话idea会帮你反编译,看不到原始的二进制文件。
3.观察class文件有很多种方法:(1)javap命令 (2)JBE -可以直接修改 (3)JClassLib (IDE插件常用)
4.class文件的构成(下篇文章做详细讲解)
5.常量池中具体的组成元素(对class文件做过深入研究)
代表构造方法
void m() 表示为 ()V
常量池中存储着各种各样的信息,这个下篇文章做详细的讲解。
6.80x86基于寄存器;JVM基于栈;栈是在内存里,寄存器是存在于cpu中的。所以80x86是比较快的。
7.java八大原子性
关于原子性的解释:所谓原子性,就是一旦开始,就会一直执行到结束,中间不会被其他线程打算的操作。