关于JVM的64bit和32bit经典问题,大家讨论下,最好有人试验过

吉星9527ABC 2010-05-29 10:47:08
JDK里 int型为4个字节长度,到64bit jdk 时还是4字节32bit吗?

另外为什么32bit机器的最大寻址空间为4G,能给个具体的详细的计算公式吗?

...全文
171 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
niejimaoo 2010-05-30
  • 打赏
  • 举报
回复
巩固基础了
tjb1216 2010-05-30
  • 打赏
  • 举报
回复
每天回帖就可得10分
吉星9527ABC 2010-05-30
  • 打赏
  • 举报
回复
呵呵 收获不小
  • 打赏
  • 举报
回复
2^10 = 1024 = 1k
2^20 = 1024 * 1024 = 1M
2^30 = 1024 * 1024 * 1024 = 1G
2^40 = 1024 * 1024 * 1024 * 1024 = 1T
2^50 = 1024 * 1024 * 1024 * 1024 * 1024 = 1P
2^60 = 1024 * 1024 * 1024 * 1024 * 1024 * 1024 = 1E

k, M, G, T, P, E 是国际单位词头,每一级相差 1000 倍,但是在计算机系统中改为每一级相差 1024 倍。

2^32 = 2^30 * 2^2 = 1G * 4 = 4G
2^64 = 2^60 * 2^4 = 1E * 16 = 16E

我们现在能接触到最大的单位也就是 T 了,但是对于 google 来说每天处理的数据量就是以 P 为单位的。
  • 打赏
  • 举报
回复
数值类型的范围是永远不会变更的。不过是 32 位,64 位抑或是 128 位,Java 中的 int 表示的值必须是 32 位。

但是 JVM 的为了能更高效的实现,在系统中占有的位数就是不一定的,一般来说 int 在 32 位系统中占用 32 位,而在 64 位系统中,占用 64 位,但是只用了 32 位。

这就好比 boolean 类型与 int 类型占用的空间是一样的,虽然只有 true 和 false 两个值,但是也占用了 int 的位宽。
吉星9527ABC 2010-05-29
  • 打赏
  • 举报
回复
byte 4294967296.00
kb 4194304.00
mb 4096.00
gb 4.00

果然是这样
shine333 2010-05-29
  • 打赏
  • 举报
回复
2^32 byte not bit
吉星9527ABC 2010-05-29
  • 打赏
  • 举报
回复
2的32次方
bit 4294967296.00
byte 536870912.00
kb 524288.00
mb 512.00

不好意思 我算出来怎么才 512 mb呢
龙四 2010-05-29
  • 打赏
  • 举报
回复
java中基本类型的长度都是固定的,不随平台改变而改变,不然还要虚拟机干嘛!
若鱼1919 2010-05-29
  • 打赏
  • 举报
回复
java里面的int都是32个bit位
64位说的是操作系统的字长
32位的寻址空间就是2的32次方,就是4G

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧