JVM 性能调优 - Java 虚拟机内存体系(1)

Java 虚拟机我们简称为 JVM(Java Virtual Machine)。

Java 虚拟机在执行 Java 程序的过程中,会管理几个不同的数据区域。如下图所示:

下面我会介绍这几个数据区的特点。

堆区的几个特点:

  • 线程共享。
  • 启动时创建堆这个区。
  • 基本上所有的对象实例都在这个区分配。
  • 物理上不连接(大对象除外)。逻辑上不连接。
  • 内存分为新生代和老年代。新生代分为 eden 区和两个大小一样的 survivor 区。

内存细分:

Java 7 及之前内存逻辑上分为三部分:新生区 + 老年代 + 永久代。

  • 新生区,又被划分为 Eden 区和 Survivor 区。
  • 老年代。
  • 永久代实现了方法区。

Java 8 及之后内存逻辑上分为三部分:新生区 + 老年代 + 元空间。

  • 新生区,又被划分为 Eden 区和 Survivor 区。
  • 老年代。
  • 废弃了永久代,使用元空间,它属于本地内存。
方法区
  • 线程共享。
  • 主要存储这几类信息。
    • 类型信息。
    • 常量。
    • 静态变量。
    • 即时编译器编译后的代码缓存。
虚拟机栈
  • 线程私有。
  • 生命周期与线程相同。
  • 一个线程中,每一个方法被执行的时候,创建一个栈帧。
  • 栈帧 Stack Frame 的结构。
    • 存储局部变量表。
      • 基本数据类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

magic_kid_2010

你的支持将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值