You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中未赋值的对象实例变量是否会被分配内存空间?

解答

只要通过new关键字创建类实例,就算没有手动给实例属性赋值,这些实例变量也会占用内存。

具体规则说明

  • Java类加载阶段就已经确定了类的结构,JVM会预先计算出每个该类实例需要占用的内存总大小,内存计算包含所有实例字段的占用空间,和后续是否给字段赋值没有关系。
  • 执行new创建实例时,JVM会直接在堆内存中分配好预先计算的全部内存空间,同时自动为所有实例变量填充对应类型的默认值,不存在「无值就不分配内存」的逻辑:
    • 示例中int age属于基本数据类型,默认值为0,固定占用4字节内存
    • 示例中String name属于引用数据类型,默认值为null,引用本身的内存占用由JVM配置决定:64位JVM默认开启指针压缩时占4字节,关闭指针压缩时占8字节
  • 你给出的示例代码执行Employee emp = new Employee();之后,age和name两个字段的内存已经完成分配,哪怕没有手动赋值,对应的内存空间也已经被占用。

内容的提问来源于stack exchange,提问作者Aryaman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:09:02