您的位置:首页 > 编程语言 > Java开发

J2SE基础_Java基本类型和Object对象占用的内存大小

2020-03-30 19:10 791 查看

知乎趣闻,2014年的YouTube的计数上限为32bit的整数即2147483647,没想到的是当年的《江南 style》突破了上限,显示-2142871897,让Google慌了神立刻去想办法,就这样YouTube被迫升级了计数系统到 9223372036854775808,这样全世界人民一起看几遍也不会出BUG了吧 ——2020.03.14

其实我上学刚接触的专业知识的时候,东一门西一门,好多知识混杂在一起有了好多错误的认知,后来查了好多资料才有了很多重新的认识,随着经验的不断累积,认知也可能再次升华,现所有言论仅代表现阶段水平

Java八种基本类型占用的内存大小

Java是被设计成和具体的硬件无关的,所以无关32位64位,感谢没有设计无符号类型,让Java更加简洁。

JVM规范中,boolean变量作为int处理,也就是4字节;boolean数组当做byte数组处理。

byte < char = short < int = boolean = float < double = long

1byte(字节)=8bit(位)

Java一个空对象占用的内存大小

对于32位的JDK
new一个Object对象占用4+8=12字节,其中,4个字节是引用,8个字节是堆内存。
对于64位的JDK
new一个Object对象占用8+16=24字节。其中,8个字节是引用,16个字节是堆内存。
在Hotspot VM(Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机),每个对象占用的总空间是以8的倍数计算的,对象占用总空间(对象头+声明变量)不足8的倍数时候,自动补齐。而这些被填充的空间,我们可以称它为“填充物”。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
非职业流浪家 发布了11 篇原创文章 · 获赞 1 · 访问量 231 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: