网易二面:Java中变量是存储在堆中还是栈中?

文章内容收录到个人网站,方便阅读http://hardyfish.top/

变量存放位置的判断依据

Java运行时内存主要分为:

栈(Stack) :线程私有,存放方法调用相关数据。

堆(Heap) :线程共享,存放对象实例。

方法区 / 元空间(Method Area / Metaspace) :存放类元信息、常量池、静态变量。

判断依据:

基本类型的值(除 String 这种引用类型外)。

  • 如果是方法的局部变量 → 存在栈帧的局部变量表
  • 如果是对象的成员变量 → 存在对象实例中(堆里)

引用类型变量

  • 引用本身(指向对象的地址)存放在栈帧局部变量表或对象实例中。
  • 对象本体存放在堆中。

类的元数据、常量池、静态变量 → 方法区 / 元空间。

方法内局部变量的存放位置

示例:

public void test() {
    int num = 10;           // 基本类型值:栈
    String str = "abc";     // 引用:栈;"abc":字符串常量池(方法区)
    User user = new User(); // 引用:栈;对象:堆
}

分析:

num:基本类型的局部变量 → 栈。

str:引用在栈,字符串常量存方法区。

user:引用在栈,对象实例在堆。

特殊情况:逃逸分析与栈上分配

JIT 编译优化时,如果对象不会逃出当前方法(没有被其他线程或方法引用),JVM 可将对象分配在栈上或进行标量替换。

优势:减少 GC 压力。

开启方式(JDK 8 默认开启):

-XX:+DoEscapeAnalysis
-XX:+EliminateAllocations

总结表

基本类型局部变量

方法内声明

基本类型成员变量

对象属性

堆(跟随对象)

引用类型局部变量

方法内声明

引用在栈,对象在堆

引用类型成员变量

对象属性

引用和值都在堆(对象内部)

静态变量

类加载时

方法区 / 元空间

常量

编译期常量池 / 运行时常量池

方法区 / 元空间

#面试题#
大厂面试每日一题 文章被收录于专栏

大厂每日一道面试题!

全部评论
27届实习机会或看我住业 https://careers.pddglobalhr.com/campus/intern?t=4OmKPVeX9a
点赞 回复 分享
发布于 03-11 17:20 上海
向大佬学习学习
点赞 回复 分享
发布于 02-19 22:43 河南
11
点赞 回复 分享
发布于 02-10 22:24 湖南

相关推荐

03-08 19:42
已编辑
拼多多_服务端开发
1.项目真实性与“含 AI 量” (最坑的一道题)面试官: “你简历里的这几个项目,哪些是完全靠 AI 生成的?哪些是你自己写的?AI 帮你解决了什么具体问题?”面试核心: 考察你对项目的控制力。如果你说“全是 AI 写的”,面试官会认为你缺乏解决复杂工程问题的能力。高分策略: 诚实交代 AI 的参与度(比如:AI 辅助生成了 70% 的样板代码、Mock 数据或单元测试),但核心的架构设计、数据库状态机切换、分布式锁的竞争边界处理必须强调是你的思考。2. AI 代码的“排毒”能力面试官: “如果 AI 给你的业务逻辑代码(比如一个复杂的 SQL 优化建议)看起来能跑,但潜伏着死锁风险,你通过什么手段识别出来?”面试核心: 考察后端基本功。AI 会写代码,但它不一定懂你的线上数据库隔离级别。考核点: 慢查询分析、事务传播机制、索引失效场景的预判。3. AI 驱动的自动化测试面试官: “你会如何利用 AI 来提升单元测试的覆盖率?你是怎么设计 Prompt(或 Skill 规范)来确保生成的测试用例覆盖了所有的边界条件(Edge Cases)?”面试核心: 考查工程素养。进阶: 谈谈你如何定义一套 Markdown 格式的 Agent Skill,让 AI 能够针对 Git Diff 自动生成高质量的 Test Case。4. 生产环境中的 AI 风险控制面试官: “如果我们在后端引入大模型做自动化审核,模型‘幻觉’(Hallucination)导致误删了用户数据,你在系统架构上会设计什么样的‘熔断’或‘人工回滚’机制?”面试核心: 容错设计。后端的核心任务永远是确定性,而 AI 是概率性的,如何用确定性的架构去包裹概率性的输出。5. AI 时代的“防御性编程”面试官: “在接入 GitHub Copilot 或 Cursor 开发时,你是否遇到过 AI 生成的代码逻辑在并发场景下失效(比如忽略了单例模式的线程安全)?你是如何发现并修复这些‘高智商垃圾’代码的?”考察点: 考察你是否具备代码审计能力,而非盲目信任 AI。------------------------------🚀 写在最后:加入我们,定义未来的后端我们正在寻找那些对底层技术有敬畏心,对前沿工具更有好奇心的同学。我们需要你:扎实的后端功底(Java/Go/C++ 任一)。对系统架构有热情,理解分布式一致性和容错处理。能熟练使用 AI 工具,并对如何提升 AI 产出质量有自己的见解。🔗 快速通道(HR 每日清筛)别让你的才华埋没在简历池里,点击下方链接直接触达核心技术团队:【PDD实习生招聘】🔗 内推链接:https://careers.pddglobalhr.com/campus/intern?t=IU9k50iFrF🎫 内推码:IU9k50iFrF⭐ 为什么说PDD暑期实习“性价比很高”① 实习满2个月即可申请转正相比很多公司需要 3-6个月实习,PDD暑期实习满2个月即可发起转正流程。② 实习转正薪资通常高于校招入职通过 实习转正入职的薪资一般更有优势。③ 免费三餐 + 高薪实习公司提供 免费三餐 + 有竞争力的实习薪资。(有任何问题欢迎找我私聊沟通,帮看面试进度)通过这个链接投递会进入内推池,简历会优先筛选。祝大家都能拿满意的 Offer,我们在 AI 时代的后端浪潮里见!
点赞 评论 收藏
分享
目前是郑州大学的研二,想要找大数据开发的工作,目前没有实习,现在已经学了ssg的离线数仓,能找到暑期实习吗?我是应该坚持找暑期实习还是再学一下实时数仓。
睡不着的二进制:熟悉八股,数仓架构,组建原理,手撕sql,准备的差不多百分之60道80就可以投递,前提简历准备好,边面试边准备边查漏补缺
点赞 评论 收藏
分享
评论
8
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务