【从零开始学习JVM】栈中存的是指针还是对象 + 堆分为哪几部分


🌈 个人主页: Hygge_Code
🔥 热门专栏:从0开始学习Java | Linux学习 | 计算机网络
💫 个人格言: "既然选择了远方,便不顾风雨兼程"

文章目录

栈中存的是指针还是对象?

  • 堆栈说明:在JVM内存模型中, 主要管理线程的局部变量与方法调用上下文;用于存储所有对象实例与数组。

  • 解释

    • 栈中存储的是:基本类型的值 + 对象的引用(地址/指针),绝不存储完整对象
    • 因此,栈中存的不是对象,而是指向对象的引用
      例如 MyObject obj = new MyObject()obj 是栈上的引用(64位机占8字节),真正的对象实例在堆中。

堆分为哪几部分?

Java堆是JVM内存管理核心区域,专门存放对象实例与数组。

堆的主要划分如下:

  • 新生代(Young Generation)

    分为 EdenSurvivor(S0 + S1)。

    新对象优先在 Eden 分配;Eden 满后触发 Minor GC

    存活对象进入 Survivor,S0 和 S1 交替使用,用于筛选短命对象。

  • 老年代(Old/Tenured Generation)

    多次 Minor GC 后仍然存活的对象,会晋升到老年代。

    老年代 GC 称为 Major GC ,频率低、速度慢,常常伴随 Full GC

  • 元空间(Metaspace)

    JDK8+ 用元空间替代永久代,存储类元数据、方法信息、常量池等。
    元空间不在堆里,使用本地内存,大幅减少 OOM 概率。

  • 大对象区(Humongous Objects)

    G1 收集器特有:超过 Region 一半大小 的对象即为大对象。

    直接分配在连续区域,逻辑上属于老年代,避免在 Survivor 间复制带来巨大开销。


如果我的内容对你有帮助,请 点赞 , 评论 , 收藏 。创作不易,大家的支持就是我坚持下去的动力!

相关推荐
爱看大明王朝156613 小时前
磁件学习-磁性元器件的极限计算
笔记·学习
woxihuan12345613 小时前
SQL删除数据时存在依赖关系_设置外键级联删除ON DELETE
jvm·数据库·python
东风破13713 小时前
DM8达梦共享存储集群DSC搭建步骤
数据库·学习·dm达梦数据库
Jetev14 小时前
如何确定SQL字段是否为空_使用IS NULL与IS NOT NULL
jvm·数据库·python
星幻元宇VR14 小时前
VR科普大空间:沉浸式公共教育新模式
科技·学习·安全·vr·虚拟现实
m0_7020365314 小时前
mysql如何处理不走索引的OR查询_使用UNION ALL优化重写
jvm·数据库·python
庞轩px14 小时前
第七篇:Spring扩展点——如何优雅地介入Bean的创建流程
java·后端·spring·bean·aware·扩展点
2401_8463395614 小时前
MySQL在云环境如何选择存储类型_SSD与高性能云盘配置建议
jvm·数据库·python
zhaoyong22215 小时前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python
tongluowan00715 小时前
一个请求在Spring MVC 中是怎么流转的
java·spring·mvc