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


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

文章目录

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

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

  • 解释:

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

堆分为哪几部分?

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

堆的主要划分如下:

  • 新生代(Young Generation)

    分为 Eden 与 Survivor(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 间复制带来巨大开销。


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

相关推荐
古法老登瞎折腾5 小时前
大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理
java·大数据·运维·spring ai·mcp
zhangrelay5 小时前
新版|-|单片机原理与接口技术-2026持续改进优化-从MEGA2560-ESP32与Wokwi到ROS2-Lyrical与具身智能栈
笔记·单片机·嵌入式硬件·学习
智能运维指南6 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
yz_aiks6 小时前
Spring AI 2.1 ChatMemory 已过时用什么替代:迁移到 Session Memory 实战(JDBC 存储与会话压缩)
java·spring boot·大模型·ai agent·spring ai
金銀銅鐵6 小时前
[Java] 用 GUI 展示 EnumMap 增删键值对时的内部变化
java·后端·ai编程
学长毕设7 小时前
基于SpringBoot的上门洗车服务系统设计与实现
java·spring boot·后端
jason成都7 小时前
RTKLIB-Java 多基线联合RTK:FIX率从0%到91.5%的三层根因修复
java·gnss·rtklib·rtklib_java
鱼宵7 小时前
Stream 终端操作一次讲透:collect、count、reduce 怎么选
java·stream·终端操作
白山编程大哥7 小时前
Java 后端如何优雅地把 List 集合返回给前端
java·前端·list
Linux运维技术栈7 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维