当前位置: 首页> 教育> 幼教 > 汉中建网站_企业网络规划的目的和意义_站长工具seo综合查询可以访问_福清网络营销

汉中建网站_企业网络规划的目的和意义_站长工具seo综合查询可以访问_福清网络营销

时间:2025/8/3 5:57:05来源:https://blog.csdn.net/weixin_47763579/article/details/146231351 浏览次数:1次
汉中建网站_企业网络规划的目的和意义_站长工具seo综合查询可以访问_福清网络营销

Java空对象内存占用与JVM内存模型解析


编程相关书籍分享:https://blog.csdn.net/weixin_47763579/article/details/145855793
DeepSeek使用技巧pdf资料分享:https://blog.csdn.net/weixin_47763579/article/details/145884039


一、空Object对象的内存占用

在64位JVM(开启指针压缩)环境下,一个空的Object对象占用16字节内存,具体构成如下:
Mark Word:50%
Klass Pointer:25%
对齐填充:25%

50% 25% 25% 空Object内存分布 Mark Word Klass Pointer 对齐填充

二、JVM对象内存结构

1. 对象内存布局

对象头 Header
Mark Word
Klass Pointer
实例数据 Instance Data
对齐填充 Padding
1.1 对象头(Header)
组成部分64位JVM(开启压缩)64位JVM(关闭压缩)
Mark Word8 bytes8 bytes
Klass Pointer4 bytes8 bytes
1.2 实例数据

存储对象字段,基础类型按实际大小存储,引用类型在开启压缩时为4 bytes

1.3 对齐填充

保证对象总大小为8字节的整数倍

2. 指针压缩优化

graph TDA[指针压缩] --> B[减少内存占用]A --> C[提升缓存效率]A --> D[默认开启]B --> E[Klass Pointer从8→4字节]C --> F[L1缓存命中率提升]

三、不同场景下的对象大小

2025-03-13 2025-03-13 2025-03-13 2025-03-13 2025-03-13 2025-03-13 2025-03-13 2025-03-13 2025-03-13 2025-03-13 2025-03-13 2025-03-13 2025-03-13 2025-03-13 2025-03-13 2025-03-13 Integer int[3] Object int[0] 普通对象 数组对象 不同对象内存占用对比

四、内存占用测量方法

1. 使用JOL工具

// 添加依赖:org.openjdk.jol:jol-core
public class MemoryLayout {public static void main(String[] args) {System.out.println(ClassLayout.parseClass(Object.class).toPrintable());}
}

2. 输出示例

java.lang.Object object internals:
OFF  SZ   TYPE DESCRIPTION               VALUE0   8        (object header: mark)     0x00000000000000018   4        (object header: class)    0x0000100012   4        (object alignment gap)    
Instance size: 16 bytes

五、内存优化建议

  1. 对象复用:使用对象池减少对象创建
  2. 字段优化
    • 优先使用基本类型
    • 避免过度包装
    • 合理排列字段顺序(long/double优先)
  3. 数据结构选择
    • 数组优先于集合
    • 原始类型集合(如Trove)
  4. JVM参数调优
    -XX:+UseCompressedOops      # 启用指针压缩
    -XX:ObjectAlignmentInBytes # 调整对齐基数(默认8)
    

六、扩展知识

  1. 继承体系的影响

    • 每个子类继承父类的字段
    • 虚方法表(vtable)不占用对象空间
  2. 数组对象特殊结构

    数组对象头
    Mark Word
    Klass Pointer
    数组长度
    数组元素
    元素1
    元素2
    ...
  3. 内存分配流程

    JVM TLAB Eden 尝试线程本地分配 分配成功 申请新TLAB 分配新内存块 alt [TLAB空间不足] 若Eden区不足时触发Minor GC JVM TLAB Eden

通过深入理解JVM内存模型,开发者可以更好地进行性能优化和内存管理。建议使用JOL工具进行实际验证,不同JVM实现和版本可能存在差异。
关键字:汉中建网站_企业网络规划的目的和意义_站长工具seo综合查询可以访问_福清网络营销

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: