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

知乎趣闻,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
J2SE基础_Java基本类型和Object对象占用的内存大小
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的倍数时候,自动补齐。而这些被填充的空间,我们可以称它为“填充物”。