java程序 在32位机和64位机上运行,有什么区别?

解决方案 »

  1.   

    如果有区别就不叫跨平台了
    都是在JVM运行。忽略平台因素
      

  2.   

    不管是大DD还是小DD,戴了套子都是同一个DD,功率另当别论...
      

  3.   

    严格意义上来说,性能上会有一点差异,同样的程序迁移到64bit的性能可能会有小幅度下降
    另外,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
      

  4.   


    我想应该速度没有区别的  64位表示CPU可以一次从寄存器中读取或者写入64位的数据
    当然如果你用64位处理器来处理32位 和 用32位来处理32位  个人感觉应该是没有区别的 你可以Google一下  我也是猜的
      

  5.   

    楼上的说的对,java英文原版书上写的,牛人~
      

  6.   

    补充一句,在使用java参数-xms -xmx定义堆大小的时候,
    1. 如果是32bit的jvm超过4G肯定是没用的,定义了4G,最终使用到的可能只有2G
    2. 这两个值最好定义成一样,可以减少java gc的操作,有小幅度性能提高
      

  7.   

    理论上来说32位的JVM有4G的堆大小限制。但是因为各种条件限制比如交换区,内核地址空间使用,内存碎片,虚拟管理机的管理开销,实际上可用的堆的大小远远比理论上的4G要少。
    在32位windows的机器上,堆最大可以达到1.4G至1.6G。
    在32位solaris的机器上,堆最大可以达到2G
    而在64位的操作系统上,32位的JVM,堆大小可以达到4G学习
      

  8.   

    因为Java是运行在JVM上的,所以就Java程序本身而言是没有区别的!这也是其跨平台的一种体现!
      

  9.   

    我想问一下,我搭建64位的JSP网站开发平台,我就搞不懂,我下载32位的JavaJDK和64位的,到底有什么区别,性能上还是什么?