JVM堆详解(定义作用及4大存放结构)

JVM堆详解(定义作用及4大存放结构)-mikechen

JVM堆是JVM内存模型的重要组成部分,下面我重点详解JVM堆的作用与组成@mikechen

JVM堆定义

堆是在 Java 虚拟机启动时创建的,Java虚拟机的堆是运行时数据区域,所有类实例和数组的内存均从此处分配。

 

JVM堆作用

堆是Java虚拟机管理的内存中最大的一块,它的主要作用是用于存储所有通过new关键字创建的对象和数组。

 

JVM堆存放结构

堆是Java虚拟机管理的内存中最大的一块,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。

如下图所示:

JVM堆详解(定义作用及4大存放结构)-mikechen

1.新生代(Young Generation)

新生代是JVM堆的一部分,用于存储新创建的对象,新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。

当一个对象被创建时,它会被分配到Eden区,当Eden区满时,JVM会启动垃圾回收,清理无用的对象,并将剩余的对象移动到Survivor区。

2.老年代(Old Generation)

老年代是JVM堆的另一部分,用于存储已经存活了一段时间的对象,老年代的空间通常比新生代大,并且包含更多的对象。

3.永久代(PermGen)

永久代是JVM堆的另一个组成部分,用于存储类的元数据和静态数据。

4.元空间(Metaspace)

在JDK 8之后,永久代已经被Metaspace取代,Metaspace是一块与堆独立的内存空间,用于存储类的元数据和静态数据。

以上就是JVM堆详解,更多JVM内容请查看:JVM(Java虚拟机)从0到1全部合集

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法