Java 性能优化之 String 篇
来源:互联网 发布:常见的大数据存储系统 编辑:程序博客网 时间:2024/06/12 01:54
String 在 JVM 的存储结构
一般而言,Java 对象在虚拟机的结构如下:
- 对象头(object header):8 个字节
- Java 原始类型数据:如 int, float, char 等类型的数据,各类型数据占内存如 表 1. Java 各数据类型所占内存.
- 引用(reference):4 个字节
- 填充符(padding)
表 1. Java 各数据类型所占内存
然而,一个 Java 对象实际还会占用些额外的空间,如:对象的 class 信息、ID、在虚拟机中的状态。在 Oracle JDK 的 Hotspot 虚拟机中,一个普通的对象需要额外 8 个字节。
如果对于 String(JDK 6)的成员变量声明如下:
private final char value[]; private final int offset; private final int count; private int hash;
那么应该如何计算该 String 所占的空间?
首先计算一个空的 char 数组所占空间,在 Java 里数组也是对象,因而数组也有对象头,故一个数组所占的空间为对象头所占的空间加上数组长度,即 8 + 4 = 12 字节 , 经过填充后为 16 字节。
那么一个空 String 所占空间为:
对象头(8 字节)+ char 数组(16 字节)+ 3 个 int(3 × 4 = 12 字节)+1 个 char 数组的引用 (4 字节 ) = 40 字节。
因此一个实际的 String 所占空间的计算公式如下:
8*( ( 8+2*n+4+12)+7 ) / 8 = 8*(int) ( ( ( (n) *2 )+43) /8 )
其中,n 为字符串长度。
0 0
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- Java 性能优化之 String 篇
- JAVA性能优化之 String
- java性能优化之String字符串优化
- java性能优化--String篇
- 【转载】Java 性能优化之String
- 命名空间
- 07.黑马程序员-char类型、类型说明符
- 内存中堆和栈的区别(转)
- fuse_trash.c:119: error: too few arguments to function 'hdfsDelete'
- mysql导入和导出数据库
- Java 性能优化之 String 篇
- AWK 简明教程
- 各种变量的存储区域及作用域
- 我的课后练习一
- 这会导致一个错误:
- MIME类型-服务端验证上传文件的类型的讨论
- 优化代码
- 使用命名空间咕到期
- main 函数的两个参数