32位和64位JVM,有人遇到过吗

wangzhan_ok 2011-11-24 11:08:20
开发环境是32位XP系统,32位JVM
运行环境是64位Windows 2003,64位JVM


问题1: 开发环境编译的class,可以在64位JVM上直接运行吗?是否有必要在运行环境上重新编译?

问题2: 单个JVM最大内存,32位XP下大约1G;在64位Windows 2003下,64位的JVM,最大内存可以达到多大?

说明,不要纯理论分析,不要拍脑袋想当然。

请有实际经历的高人答复。
...全文
503 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yh2326yh0 2014-02-08
  • 打赏
  • 举报
回复
JVM 32 位理论上的最大值为4G, 但是由于Windows的内存管理模式,其在Windows下最大的内存大约是1.6G. 而在Linux下,最大内存可以达到3.6G. JVM 64 位在现有设备体系里可以视作无限容量。 编译好的class文件与位数没有关系。因为class文件是一个结构严格的二进制文件,其里面符号所占的字节长短数有严格的定义。 class文件的兼容性与所在JVM的版本有关。比如JVM 7编译的class文件不能在JVM 6里运行。 反之理论上是可以的。 Heap内存大小与系统有关。根据系统数据的特性来设定Heap内存大小。Heap内存大小与GC效率之间有阀值存在,并非越大越好。当然,如果你把新生代设的非常小,老年代设的非常大,则很有可能不会出现GC的情况(系统数据根本用不完Heap内存)。不过这种程度的设置也就当作玩笑听听罢了。
  • 打赏
  • 举报
回复
1:64 位的 JVM 内存没有限制,这不是凭空想出来的,是 FAQ 上的东西:
http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#64bit_description

不建议将 JVM heap 内存设得非常大,这将导致 GC 的效率大大地降低!

2:.class 文件不需要重新编译。因为字节码规范是不分 32 位和 64 位的,区别在于不同的 JVM 解释这些字节码后该如何执行。
qiuqiupeng 2011-11-28
  • 打赏
  • 举报
回复
苹果雪豹系统是64位的,从理论到实践都是可以运行的。理论:class文件的运行基本与系统无关。
jvm可以配置内存,你想要多大的内存啊,内存大不一定是好事。要多大是架构师考虑的问题。
hzc543806053 2011-11-24
  • 打赏
  • 举报
回复
跨平台
funfenffun 2011-11-24
  • 打赏
  • 举报
回复
重复发帖了
amowker 2011-11-24
  • 打赏
  • 举报
回复
1.可以运行,不需要重新编译。有实际经验,不是拍脑袋

2.jvm运行最大内存好像是可以设置的吧

[Quote=引用楼主 wangzhan_ok 的回复:]
开发环境是32位XP系统,32位JVM
运行环境是64位Windows 2003,64位JVM


问题1: 开发环境编译的class,可以在64位JVM上直接运行吗?是否有必要在运行环境上重新编译?

问题2: 单个JVM最大内存,32位XP下大约1G;在64位Windows 2003下,64位的JVM,最大内存可以达到多大?

说明,不要纯理论分析,不要拍脑袋想当然。

请……
[/Quote]


--signature--------------------------
http://www.purji.com/

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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