String 在 JVM 的存储结构
一般而言,Java 对象在虚拟机的结构如下:
-
对象头(object header):8 个字节
-
Java 原始类型数据:如 int, float, char 等类型的数据,各类型数据占内存如表
1. Java 各数据类型所占内存.
-
引用(reference):4 个字节
-
填充符(padding)
表 1. Java 各数据类型所占内存
数据类型
占用内存(字节数)
boolean |
1 |
byte |
char |
2 |
short |
int |
4 |
float |
long |
8 |
double |
然而,一个 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 为字符串长度。
分享到:
相关推荐
性能优化手册是一套java性能学习研究小技巧,包含内容:Java性能优化、JVM性能优化、服务器性能优化、数据库性能优化、前端性能优化等。 内容包括但不限于: String 性能优化的 3 个小技巧 HashMap 7 种遍历方式...
根据提供的文件信息,我们可以推断出这是一本关于Java程序性能优化的书籍,作者是葛一鸣,并提供了该书PDF版本的下载链接。虽然没有具体的书籍内容,但基于标题、描述以及通常这类书籍会涉及的主题,我们可以总结出...
性能优化手册是一套java性能学习研究小技巧,包含内容:Java性能优化、JVM性能优化、服务器性能优化、数据库性能优化、前端性能优化等。 内容包括但不限于: String 性能优化的 3 个小技巧 HashMap 7 种遍历方式...
在Java性能优化实战的21讲中,涵盖了Java开发中至关重要的性能调优技术,旨在提升应用程序的效率、稳定性和可扩展性。以下是对这些关键知识点的详细解析: 1. **JVM内存模型**:理解Java虚拟机(JVM)的内存结构是...
Java性能优化是提升Java应用程序效率的关键技术,涵盖了内存管理、代码优化、I/O处理等多个方面。以下是一些关键的性能优化策略: 1. **对象创建与克隆**:使用`new`关键字创建对象时,会调用构造函数链,这可能...
垃圾回收机制是Java性能优化的关键之一。需要合理地配置垃圾回收机制的参数,避免垃圾回收机制对系统性能的影响。 3. 代码优化。代码优化是Java性能优化的重要方面。需要合理地编写代码,避免使用低效的算法,使用...
本资料集锦主要涵盖了Java性能优化的多个方面,包括但不限于代码优化、内存管理、系统设计与优化等关键领域。 一、Java程序性能优化(23条) 1. **避免过度使用反射**:反射在某些场景下很有用,但其开销较大,应...
这份资料"Java程序性能优化.rar"包含了高清文档和书籍源码,为我们提供了深入学习和实践Java性能优化的机会。 1. **JVM调优** - **垃圾回收(Garbage Collection)**:理解不同的GC算法,如Serial、Parallel、CMS...
通过学习这本书,开发者不仅可以掌握Java性能优化的核心技术,还能培养出良好的编程习惯,使程序运行得更快、更稳定,为企业的系统性能提供有力保障。同时,对于个人技能提升和职业发展,这本书也具有很高的价值。
Java性能优化是提升系统效率的关键环节,特别是在处理大量数据或者高并发场景时,优化显得尤为重要。本主题将围绕“Java性能优化方法”展开,重点讨论Java集合的排序、反射机制在Spring中的应用以及如何减少对象的...
Java性能优化技巧集锦是一篇详细的技术文章,旨在帮助Java开发者提高应用程序的性能。下面是该文章中提到的重要知识点: 一、通用篇 1.1 不用 new 关键词创建类的实例 使用clone()方法创建新的对象实例,而不是...
### Java性能优化技巧详解 #### 一、引言 在当今快速发展的软件行业中,提高程序的执行效率成为了软件工程师的一项重要任务。对于Java开发者来说,理解如何优化Java程序的性能至关重要。本文将深入探讨Java性能...
《Java性能优化》一书是Java开发者的重要参考资料,它深入探讨了如何提升Java应用程序的运行效率,涵盖了从代码设计到系统调优的多个层面。源码是书籍理论知识的实践体现,通过分析和学习这些源码,我们可以更直观地...
### Java性能优化关键知识点 #### 一、合理运用单例模式 **单例模式**是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在Java性能优化中,合理使用单例模式可以带来以下优势: 1. **...
【Java性能优化技巧集锦】 Java性能优化是一个关键的话题,对于提升应用程序的效率和响应速度至关重要。以下是一些通用和特定领域的性能优化技巧。 一、通用篇 1.1 不用 new 关键词创建类的实例 使用`new`创建...
Java开发中的性能优化是提升应用程序效率的关键步骤。在编程中,我们需要关注代码的运行效率,以确保程序在处理大量数据或高并发场景下仍能保持高效。以下是一些Java编程中为了性能需要注意的地方: 1. **单例模式...
以下是一些关键的Java String性能优化策略: 1. 避免使用String构造函数: 直接使用字符串字面量通常是更高效的选择,而不是通过构造函数创建String对象。例如,`String str = "example"`比`String str = new ...