JVM堆是JVM内存模型的重要组成部分,下面我重点详解JVM堆的作用与组成@mikechen
JVM堆定义
堆是在 Java 虚拟机启动时创建的,Java虚拟机的堆是运行时数据区域,所有类实例和数组的内存均从此处分配。
JVM堆作用
堆是Java虚拟机管理的内存中最大的一块,它的主要作用是用于存储所有通过new关键字创建的对象和数组。
JVM堆存放结构
堆是Java虚拟机管理的内存中最大的一块,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。
如下图所示:
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年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》