一、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没有永久代,不需要配置永久代。
- 永久代会为GC带来不必要的复杂度,并且回收效率偏低。
- 将永久代的类的元信息存储到元空间
3.引入元空间
- 元空间是在本地内存中,空间大小有本地内存就决定。
本文介绍了JVM的基本概念,包括其组成部分如堆、方法区、栈等。详细阐述了JVM不同版本之间的变化,特别是JDK 1.8与1.7的对比,指出1.8中永久代被废弃,由元空间和堆取代,以解决永久代内存溢出的问题,简化垃圾回收并提高效率。
86万+

被折叠的 条评论
为什么被折叠?



