Java8String内存分析
Java8String内存分析
内存对象分布&结构
根据java虚拟机规范里面的描述:java对象分为三部分:对象头(Object Header), 实例数据(instance data),对齐填充(padding) 。
真实的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字节大小
内存大小分析
内存占用组成:
- 对象头 12
- char[]数组引用 4
- int 类型 hash数据大小 4
- loss due to the next object alignment 对齐填充 4
注意点: 当前内存大小是在默认开启压缩指针的条件下
参考:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统