登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
1
2
/ 2 页
下一页
返回列表
首页
›
业界区
›
业界
›
压缩指针:64位系统下,Java虚拟机是如何“偷”回4字节 ...
压缩指针:64位系统下,Java虚拟机是如何“偷”回4字节内存的?
[ 复制链接 ]
讲怔
2025-10-27 21:50:01
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
Java对象:在内存中的真面目
在Java中,通过new关键字创建一个Java类的实例对象时,该对象会通过碰撞指针方式存储在内存的堆中,并被分配一个内存地址。在Java虚拟机中,一个Java对象由对象头(Object Header)、实例数据(Instance Data)和对齐填充(Padding)三部分构成。
对象头
对象头由两个字(计算机术语,表示计算机处理数据的最小单位)组成。如果对象是一个Java数组,对象头中还必须包含一部分用于记录数组长度的数据,因为虽然Java虚拟机可以通过Java对象的元数据信息确定Java对象的大小,但无法从数组的元数据中确定数组的大小。
对象头的两个字分别是Mark Word和Klass Pointer。
1)Mark Word:即标记字段,用于存储对象自身的运行时数据,如哈希码(HashCode)、垃圾回收分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。
2)Klass Pointer:即类型指针,是对象指向它的类元数据的指针,Java虚拟机通过这个指针来确定这个对象是哪个Java类的实例。
实例数据
实例数据部分存储对象的属性字段信息。如果对象没有属性字段,那么这部分就不会有数据。字段类型的不同会占用不同的字节,例如,boolean类型占1个字节,int类型占4个字节等。
对齐填充
对齐填充是为了满足Java虚拟机堆中对象起始地址需要对齐至8的倍数的要求。如果一个对象未使用到8N个字节,则需要进行填充,以补齐对象头和实例数据占用内存后的剩余空间。
字段内存对齐的目的之一是确保字段只出现在同一处理器的缓存行中。如果字段未对齐,可能会出现跨缓存行的字段,即该字段的读取可能需要替换两个缓存行,而该字段的存储也可能同时污染两个缓存行,这对程序执行效率都是不利的。实际上,对齐填充的最终目标是为了实现计算机的高效寻址。
压缩指针
在64位Java虚拟机中,对象头部的Mark Word和Klass Pointer,分别占据64位,因此每个Java对象的内存额外开销就是16字节。以Integer类为例,它仅有一个int类型的私有字段,占用4字节,因此,每个Integer对象的内存开销至少增加400%。这也是Java引入基本数据类型(Primitive Data Type)的原因之一。
在64位系统中,普通的对象引用通常需要64位(8字节)的空间。然而,对于许多应用程序,这种大尺寸的引用是不必要的,因为它们的堆内存使用量远小于64位地址空间的上限(即18亿GB)。因此,64位Java虚拟机引入了压缩指针(Compressed Pointer)技术,将Java对象指针压缩为32位。这样,对象头部中的Klass Pointer也被压缩为32位,从而将对象头部的大小从16字节减小到12字节。
工作原理
Java虚拟机假设所有对象的大小都是8字节的倍数(不足将对齐填充),因此对象的实际地址可以表示为基地址加上一个偏移量,而这个偏移量是8的倍数。因此,Java虚拟机只需要存储这个偏移量,而不是完整的64位地址。由于偏移量是8的倍数,所以它的最后三位总是0,Java虚拟机可以将这个偏移量右移三位,从而将其压缩到32位的空间。
下面是8和它的倍数对应的二进制关系。
8 = 1000
16 = 10000
24 = 11000
32 = 100000
40 = 101000
48 = 110000
56 = 111000
64 = 1000000
72 = 1001000
复制代码
可以看到,在二进制下,8和它的倍数的后三位都是0。因为后三位都是0,所以可以在拿到地址后舍弃后三位,读取的时候加上后三位。这个过程可以用以下的伪代码表示。
int offset = getObjectOffset(); // 获取对象的32位偏移量
offset = offset
压缩
指针
64位
系统
Java
相关帖子
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
Windows系统安装OpenClaw并使用Qwen千问接入飞书教程
解决 api-ms-win-core-path-l1-1-0.dll 缺失错误:Windows 7 系统完整修复指南
OpenClaw 插件系统:如何打造全能私人助理 --OpenClaw源码系列第2期
PipelinR:在Java中实现优雅的CQRS架构
PipelinR:在Java中实现优雅的CQRS架构
PipelinR:在Java中实现优雅的CQRS架构
PipelinR:在Java中实现优雅的CQRS架构
PipelinR:在Java中实现优雅的CQRS架构
第 4 篇|状态机:调度系统真正的灵魂
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
2
346
擘塞
2026-03-03
业界
Windows系统安装OpenClaw并使用Qwen千问接入飞书教程
0
72
吉娅寿
2026-03-04
安全
解决 api-ms-win-core-path-l1-1-0.dll 缺失错误:Windows 7 系统完整修复指南
1
616
拍棹
2026-03-04
业界
OpenClaw 插件系统:如何打造全能私人助理 --OpenClaw源码系列第2期
0
938
吟氅
2026-03-04
业界
PipelinR:在Java中实现优雅的CQRS架构
0
941
秤陷曲
2026-03-05
业界
PipelinR:在Java中实现优雅的CQRS架构
0
58
尹心菱
2026-03-05
业界
PipelinR:在Java中实现优雅的CQRS架构
0
923
搜娲瘠
2026-03-05
业界
PipelinR:在Java中实现优雅的CQRS架构
0
38
恙髡
2026-03-05
业界
PipelinR:在Java中实现优雅的CQRS架构
0
5
铜坠匍
2026-03-05
安全
第 4 篇|状态机:调度系统真正的灵魂
0
92
诀锺
2026-03-05
回复
(31)
勺缓曜
2025-10-30 04:14:37
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
前排留名,哈哈哈
萨瑞饨
2025-11-5 07:49:10
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
羊舌正清
2025-11-6 03:08:03
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
收藏一下 不知道什么时候能用到
宿遘稠
2025-12-10 09:07:28
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
这个有用。
呵桢
2025-12-10 21:31:33
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
很好很强大 我过来先占个楼 待编辑
汤流婉
2025-12-14 17:07:07
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢,下载保存了
孟清妍
2025-12-29 17:19:30
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
分享、互助 让互联网精神温暖你我
府扔影
2026-1-14 17:20:06
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,下载保存了,貌似很强大
狞嗅
2026-1-16 15:49:05
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
分享、互助 让互联网精神温暖你我
裸历
2026-1-18 22:02:38
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢,下载保存了
谲脾
2026-1-19 02:24:17
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢,下载保存了
博咱
2026-1-19 15:09:11
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
溜椎干
2026-1-20 13:29:15
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
乱蚣
2026-1-20 20:13:28
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
过来提前占个楼
肿抢
2026-1-20 21:09:19
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
yyds。多谢分享
簑威龙
2026-1-24 11:31:33
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
热心回复!
吉娅寿
2026-1-25 10:32:23
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
鼓励转贴优秀软件安全工具和文档!
井晶灵
2026-1-25 11:43:54
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
分享、互助 让互联网精神温暖你我
咪四
2026-1-28 02:56:30
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
yyds。多谢分享
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
讲怔
2026-1-28 02:56:30
关注
0
粉丝关注
21
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
宋子
9888
6
韶又彤
9910
7
闰咄阅
9993
8
刎唇
9995
9
蓬森莉
9871
10
遗憩
10006
查看更多
今日好文热榜
167
记一次SQL server2008 数据库事务日志已满
917
DC逻辑综合及优化
243
Copilot 命令行使用方式介绍(npm)
830
【Python 教程】如何将 JSON 数据转换为 Ex
117
程序员必须知道的核心算法思想
492
Apache SeaTunnel 要不要升?怎么升?一文
527
003:RAG 入门-LangChain 读取图片数据
406
数数
883
Ubuntu离线环境部署Kubernetes v1.31.3(AR
843
一天一个Python库:virtualenv - 隔离你的P
232
实现配电电力设备Modbus与 IEC61850 管理平
92
第 4 篇|状态机:调度系统真正的灵魂
400
MySQL全方位加密与安全加固实战:从存储、
773
OpenClaw 多工作区与多机器人配置完全指南
874
ClawX 消息频道快速部署:飞书、钉钉与主流
919
AI开发-python-milvus向量数据库(2-16 -mi
763
散点云处理笔记(一):基于主成份分析算法
148
Windows下安装 Ollama + OpenClaw + 飞书,
497
告别售后噩梦:顶级改装店为何首推RF刹车
66
【EASY-YAPI】IDEA插件easyyapi如何解决公