JVM基础讲解

本文介绍了JVM的基本概念,包括其组成部分如堆、方法区、栈等。详细阐述了JVM不同版本之间的变化,特别是JDK 1.8与1.7的对比,指出1.8中永久代被废弃,由元空间和堆取代,以解决永久代内存溢出的问题,简化垃圾回收并提高效率。


一、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.引入元空间

  • 元空间是在本地内存中,空间大小有本地内存就决定。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值