正文:
1.JVM堆内存结构
JVM主要管理两种类型的内存,堆内存和非堆内存。 “java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此分配,堆是java虚拟机启动时创建的”,对内存就是代码可及的地方。 “java虚拟机除堆外的内存称为非堆内存”,是java虚拟机自己内部所需的内存。
JVM堆内存的结构如下图所示:
![巩固java(二)----JVM堆内存结构及垃圾回收机制 巩固java(二)----JVM堆内存结构及垃圾回收机制](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9abWxzWlRvdkx5OURPaTlWYzJWeWN5OUJSRTFKVGtsK01TOUJjSEJFWVhSaEwweHZZMkZzTDFSbGJYQXZaVzVvZEcxc1kyeHBjQzlKYldGblpTNXdibWM9.jpg?w=700)
2.JVM垃圾回收
在上面的申请内存过程中已经涉及到了垃圾回收,下面在详细说一下。 先说一下新域的垃圾回收过程: 在新域中有两个survivor作为中转,两个survivor相对的作为from和to逻辑区域,其中from区域用来保存对象,to区域保持为空。 当eden区域不足以支持新增对象时,会执行垃圾回收(GC),eden中的对象和from区域的对象转移到to区域,当to区域满时,一部分对象转移到old区域,即旧域。![巩固java(二)----JVM堆内存结构及垃圾回收机制 巩固java(二)----JVM堆内存结构及垃圾回收机制](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9abWxzWlRvdkx5OURPaTlWYzJWeWN5OUJSRTFKVGtsK01TOUJjSEJFWVhSaEwweHZZMkZzTDFSbGJYQXZaVzVvZEcxc1kyeHBjQzlKYldGblpTZ3lLUzV3Ym1jPQ%3D%3D.jpg?w=700)