java程序 在32位机和64位机上运行,有什么区别?
解决方案 »
- myeclipse8.0 装find bugs
- 如何实现画布卷动?
- jsp,servlet,mysql中文问题最新实践.
- 怎样重新设置标准输入为键盘
- 消息事件机制与操作系统有什么关系?
- Java泛型,请教高手
- 在线等~JAVA数据库(日期数据类型问题)?
- 如何由将一个4字节大小的数组中存放的值转换为类型为int变量的值?
- <jsp:setProperty name="PageHeaderInfo" property="*" />是给所有的属性设值,那具体的每个属性得到的值是多少?
- 到哪找netscape.javascript.*这个包?
- Swing中能否设置当前鼠标坐标?
- 如何能获得选择的JTree的结点?
都是在JVM运行。忽略平台因素
另外,64bit的jvm不再有heap size的限制。The maximum theoretical heap limit for the 32-bit JVM is 4G. Due to various additional constraints such as available swap, kernel address space usage, memory fragmentation, and VM overhead, in practice the limit can be much lower. On most modern 32-bit Windows systems the maximum heap size will range from 1.4G to 1.6G. On 32-bit Solaris kernels the address space is limited to 2G. On 64-bit operating systems running the 32-bit VM, the max heap size can be higher, approaching 4G on many Solaris systems. 理论上来说32位的JVM有4G的堆大小限制。但是因为各种条件限制比如交换区,内核地址空间使用,内存碎片,虚拟管理机的管理开销,实际上可用的堆的大小远远比理论上的4G要少。
在32位windows的机器上,堆最大可以达到1.4G至1.6G。
在32位solaris的机器上,堆最大可以达到2G
而在64位的操作系统上,32位的JVM,堆大小可以达到4G
我想应该速度没有区别的 64位表示CPU可以一次从寄存器中读取或者写入64位的数据
当然如果你用64位处理器来处理32位 和 用32位来处理32位 个人感觉应该是没有区别的 你可以Google一下 我也是猜的
1. 如果是32bit的jvm超过4G肯定是没用的,定义了4G,最终使用到的可能只有2G
2. 这两个值最好定义成一样,可以减少java gc的操作,有小幅度性能提高
在32位windows的机器上,堆最大可以达到1.4G至1.6G。
在32位solaris的机器上,堆最大可以达到2G
而在64位的操作系统上,32位的JVM,堆大小可以达到4G学习