Java中String类型的大小

news2024/11/18 1:30:24

java对象在HotSpot虚拟机中的结构

在这里插入图片描述

Java对象由三部分组成,对象头、实例数据、填充数据。

对象头
  1. markwork

    存储对象运行时数据,HashCode、GC分代年龄、锁状态标志、线程持有的锁、偏向锁ID、偏向时间戳等。在64位虚拟机中,如果没有开启压缩指针,占用64bit。

    无锁
    锁状态25位31位1位4位1位(偏向锁位)2位(锁标志)
    无锁unusedhashCode(调用hashCode方法时填充)unused分代年龄001
    偏向锁
    锁状态54位2位1位4位1位(偏向锁位)2位(锁标志)
    偏向锁当前线程指针Epochunused分代年龄101
    轻量级锁(自旋锁)
    锁状态62位2位(锁标志)
    轻量级锁指向线程栈中LockRecord的指针(通过自旋竞争锁CAS,有次数上限)00
    重量级锁
    锁状态62位2位(锁标志)
    重量级锁指向互斥量(重量级锁)的指针10
  2. klass

    Class对象指针的大小也是4个字节,其指向的位置是对象对应的Class对象(其对应的元数据对象)的内存地址。

  3. 数组长度

    只有数组对象有数组长度,如果对象为数组,对象头中必须记录数组长度。

对象实际数据

包括了对象的所有成员变量,其大小由各个成员变量的大小决定

填充

填充数据不是必须存在的,没有特别的含义,只是占位,HotSpot中VM内存管理系统要求对象起始地址必须是8字节的整数倍,
即对象大小必须是8字节的整数倍,对象头是8字节的1或2倍。

Java中String类型的大小

String成员变量

/** The value is used for character storage. */
private final char value[];

/** Cache the hash code for the string */
private int hash; // Default to 0

/** use serialVersionUID from JDK 1.0.2 for interoperability */
private static final long serialVersionUID = -6849794470754667710L;

对象头(未开启压缩指针):8 (Markdown)+ 4(Klass指针)+(8+4+4)(char数组大小) + 4(hash大小)+ 8(serialVersionUID大小) = 40

非空String内存大小

40(空对象大小) + 2(一个char2字节) * n

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1692672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库系统基础知识

一、基本概念 二、数据库三级模式两级映像 三、数据库的分析与设计过程 四、数据模型 五、关系代数 六、数据库完整性约束 七、关系型数据库SQL简介 八、关系数据库的规范化 九、数据库的控制功能 十、数据仓库与数据挖掘基础 十一、大数据基本概念 数据库基本概念 1、数据库…

论文笔记:GPT4Rec: Graph Prompt Tuning for Streaming Recommendation

SIGIR 2024 1 intro 1.1 背景 传统推荐系统方法在实际应用中往往未能兑现基准数据集所做的承诺 这种差异主要源于传统的离线训练和测试方法在这些场景中,模型在大型静态数据集上训练,然后在有限的测试集上评估,这一过程没有考虑到现实世界…

第二十届文博会沙井艺立方分会场启幕!大咖齐打卡!

2024年5月24日-27日,第二十届中国(深圳)国际文化产业博览交易会沙井艺立方分会场活动将在艺立方非遗(文旅)产业园盛大举办。 本届文博会艺立方分会场活动办展特色鲜明,亮彩纷呈,将以“种下梧桐树…

留学培训行业PaaS应用系统架构的设计与实践

随着留学需求的增长和教育培训市场的不断扩大,留学培训行业正面临着越来越多的挑战和机遇。在这个背景下,利用PaaS(Platform as a Service)平台来构建留学培训行业的应用系统架构,将成为提升服务质量和效率的重要手段。…

工厂生产管理系统

为应对一些国内验厂,如大疆等,他们需要客户有自己的生产管理系统的,但实际很多公司是没有引入ERP这类的系统的,从而想开发一套简单的生产管理系统。 参考了网上一个比较古老的StorageMange项目,此项目用到DevExpress的…

「探讨」:什么是网络审计?好用的网络审计系统推荐【图文详解】

网络是企业运营、政府管理、个人生活不可或缺的基础设施。 然而网络安全问题却日益凸显,数据泄露、网络攻击、欺诈行为等风险日益严重。 一、网络审计的定义 网络审计,又称信息技术审计或电子审计,是指审计人员运用专业技能和工具&#xff…

亚马逊测评技术自己掌控:打造爆款产品,快速突破销量瓶颈

不管新老店铺来说,出单都是至关重要的,在我们的理解当中测评应该是一种成长剂,是一个加快店铺成长的工具,因为它在店铺的破0、突破瓶颈期、引爆爆款以及在后期店铺的一个补量上都会有一个明显的作用 测评有什么意义? …

简历–工作经历–通用

雇主将会很注意简历中的工作经历这一部分。在看完求职目标后,他们想了解你的历史,你曾在哪儿工作,工作了多长时间。他们想弄明白的是“你是个稳定可靠的人吗?”,“你发挥出的才能有哪些?”最重要的是你是否…

python-找出四位数中的玫瑰花数

【问题描述】玫瑰花数指一个n位数(n>4),其每位上的数字的n次幂之和等于本身。 请求出所有四位数中的玫瑰花数 【输入形式】 【输出形式】 【样例输入】 【样例输出】1634 8208 9474 【样例说明】 【评分标准】 完整代码如下: for n in ra…

android实现PhotoShop里的魔棒效果

魔棒是画板工具一个重要的功能,非常实用,只要轻轻一点,就能把触摸到的颜色区域选中,做复制、剪切、擦除等工作。 那怎么实现呢? 先来看看效果: 要实现这个效果,需要对安卓canvas和paint理解比…

【研发日记】【策划向】(一)游戏策划其实就是一道加减法题

文章目录 序设计的过程其实是控制自己欲望的过程我海纳百川,你要不要看看?我跟别人不一样!我的人设就是没有人设,或者说任何人设都是我的人设 记 序 不知不觉进入这个行业几年了,也经历了独立开发和团队开发的过程。在…

【SQL】外连接 LEFT JOIN

目录 一.内连接与外连接 1.内连接(inner join) 2.外连接(outer join) 二.两表连接 1.我们先来试试看内连接: 2.我们再来试试外连接 三.单表外连接 四.总结 一.内连接与外连接 先得介绍内连接和外连接两个概念&…

git回退到指定版本,同时提交记录也会删除

第一步&#xff1a; git reset --hard xxx (需要恢复版本的 commit id)第二步&#xff1a;branch_name就是远程分支的名称 git push origin <branch_name> --force

解决GoLand无法Debug

goland 调试的的时候提示如下错误 WARNING: undefined behavior - version of Delve is too old for Go version 1.22.3 (maximum supported v 其实个原因是因为正在使用的Delve调试器版本太旧&#xff0c;无法兼容当前的Go语言版本1.22.3。Delve是Go语言的一个调试工具&#…

Java使用apache.poi生成excel插入word中

加油&#xff0c;新时代打工人&#xff01; 工作需求&#xff0c;上个文章我们生成好的word&#xff0c;这次将生成好的excel表格数据&#xff0c;插入word中。需要准备好excle数据&#xff0c;然后插入到word中。 最后个需要&#xff0c;就是把这些生成好的word文档转成pdf进行…

STL题单总结

下周争取全部刷掉 牛客 知乎推荐的题 收藏的文章1 收藏的文章2 收藏的文章3 洛谷题单

Python爬虫:爬取B站视频(最新、能用且讲解详细)【01】

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

spring cache(三)demo

一、入门demo 1、pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.o…

java读取shp文件,获取点位

Testvoid contextLoads() {System.out.println(System.currentTimeMillis());//1716516228057 1716516228798String zipFilePath "C:\\code\\risk\\risk_management_backend\\edatope-app\\src\\main\\resources\\新中心范围SHP导入模板.zip";String destDir &quo…

React 中的jsx 的语法使用

react 中是使用 JSX 编写标签的 它是可选的&#xff0c;但大多数 React 项目会使用 JSX&#xff0c;主要是它很方便。所有 我们推荐的本地开发工具 都开箱即用地支持 JSX。 JSX 比 HTML 更加严格。你必须闭合标签&#xff0c;如 <br />。你的组件也不能返回多个 JSX 标…