所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据。如果我们将总长128位的指令分别按照16位、32位、64位为单位进行编辑的话:旧的16位处理器,比如Intel 80286 CPU需要8个指令,32位的处理器需要4个指令,而64位处理器则只要两个指令,显然,在工作频率相同的情况下,64位处理器的处理速度会比16位、32位的更快。而且除了运算能力之外,与32位处理器相比,64位处理器的优势还体现在系统对内存的控制上。由于地址使用的是特殊的整数,而64位处理器的一个ALU(算术逻辑运算器)和寄存器可以处理更大的整数,也就是更大的地址。传统32位处理器的寻址空间最大为4GB,使得很多需要大容量内存的数据处理程序在这时都会显得捉襟见肘,形成了运行效率的瓶颈。而64位的处理器在理论上则可以达到1800万个TB,1TB等于1024GB,1GB等于1024MB,所以64位的处理器能够彻底解决32位计算系统所遇到的瓶颈现象,速度快人一等,对于那些要求多处理器可扩展性、更大的可寻址内存、视频/音频/三维处理或较高计算准确性的应用程序而言,64处理器可提供卓越的性能。
java程序从源文件创建到程序运行经过两大步骤:1、源代码由编译器编译成字节码bytecode;2、字节码由java虚拟机解释运行。
理论上来说32位的JVM有4G的堆大小限制。但是因为各种条件限制比如交换区,内核地址空间使用,内存碎片,虚拟管理机的管理开销,实际上可用的堆的大小远远比理论上的4G要少。在64位的操作系统上,32位的JVM,堆大小可以达到4G。
1、开发和编译环境是32位jdk,运行环境是64位jvm,需要重新编译么?
答:不用,编译好的class文件与位数没有关系。因为class文件是一个结构严格的二进制文件,其里面符号所占的字节长短数有严格的定义。class文件的兼容性与所在JVM的版本有关。比如JVM 7编译的class文件不能在JVM 6里运行。 反之理论上是可以的。
Heap内存大小与GC效率之间有阀值存在,并非越大越好。