一、JVM是什么?
- JVM它是Java Virtual Machine 的缩写,主要是通过在实际计算机模仿各种计算机功能来实现的,组成部分包括堆、方法区、栈、本地方法栈、程序计算器等部分组成的,其中方法回收堆和方法区是共享区,也就是谁都可以使用,而栈和程序计算器、本地方法栈区是归JVM的。Java能够被称为“一次编译,到处运行”的原因就是Java屏蔽了很多的操作系统平台相关信息,使得Java只需要生成在JVM虚拟机运行的目标代码也就是所说的字节码,就可以在多种平台运行
二、JVM版本比较
1.jdk 1.8与jdk1.7版本对比
- jdk1.8废弃了永久代,将永久代存储的类元数据、静态变量、常量池等数据分别存储到了元空间和堆
- 元空间存储永久代的类的元数据
- 堆存储永久代的静态变量、常量池
2.废弃永久代
- 永久代的数据大小不容易确定,因为这其中有很多影响因素,比如类的总数,常量池的大小和方法数量等,-XX:MaxPermSize 指定太小很容易造成永久代内存溢出。
- 移除永久代是为融合HotSpot VM与 JRockit VM而做出的努力,因为JRockit没有永久代,不需要配置永久代。
- 永久