📚 分类
JVM
🕵🏽‍♀️ 问题描述
什么是堆(Heap)内存?
👨‍🏫 问题讲解
❒ 线程共享的区域:

✔ 主要用来保存new创建的对象实例,数组等,当堆中没有内存空间可分配给实例,也无法再扩展时,则抛出OutOfMemoryError异常。
✔ 年轻代被划分为三部分,Eden区和两个大小严格相同的Survivor区(默认8: 1: 1)。
✔ 根据JVM的策略,在经过几次垃圾收集后(默认15次),任然存活于Survivor的对象将被移动到老年代区间。
✔ 老年代主要保存生命周期长的对象,一般是一些老的对象。

❒ jdk1.7的时候方法区/永久带是放在堆内存里面的。为了节省内存,jdk1.8把方法区/永久带改名字元空间,放到本地内存中。
🏳️‍🌈 问题总结
❒ 线程共享的区域(会出现线程安全问题): 主要用来保存对象实例,数组等,内存不够则抛出 OutOfMemoryError异常。
✔ 组成: 年轻代 + 老年代
✔ 年轻代被划分为三部分,Eden区和两个大小严格相同的Survivor区
✔ 老年代主要保存生命周期长的对象,一般是一些老的对象

❒ Jdk1.7 和 1.8的区别
✔ 1.7 中有有一个永久代,存储的是类信息、静态变量、常量、编译后的代码
✔ 1.8 移除了永久代,把数据存储到了本地内存的元空间中,防止内存溢出
📖 问题信息
📈 浏览次数:21 | 📅 更新时间:2025-12-15 07:32:08
📦 创建信息
🏷️ ID:127 | 📅 创建时间:2025-02-06 02:08:45