Java8String内存分析

Java8String内存分析

image

内存对象分布&结构

根据java虚拟机规范里面的描述:java对象分为三部分:对象头(Object Header), 实例数据(instance data),对齐填充(padding) 。

image

真实的Sring内存大小

对象实际占用内存查看工具

  • 引入依赖
        <dependency>
            <groupId>org.openjdk.jol</groupId>
            <artifactId>jol-core</artifactId>
            <version>0.9</version>
        </dependency>
  • 内存查看Code
package com.arithmetic.jvm;

import org.openjdk.jol.info.ClassLayout;

public class JVMString {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.print(ClassLayout.parseClass(String.class).toPrintable());
    }
}
  • 运行结果

    在JDK8下空String默认内存大小24字节大小

image

内存大小分析

内存占用组成:

  • 对象头 12
  • char[]数组引用 4
  • int 类型 hash数据大小 4
  • loss due to the next object alignment 对齐填充 4

image

注意点: 当前内存大小是在默认开启压缩指针的条件下

参考:

一个 String 字符串占多少内存?

JVM系列之:String,数组和集合类的内存占用大小

聊聊java对象内存布局

posted @   非学无以致疑  阅读(255)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示