64位的Java与32位的有啥不同

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了64位的Java与32位的有啥不同相关的知识,希望对你有一定的参考价值。

所谓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位计算系统所遇到的瓶颈现象,速度快人一等,对于那些要求多处理器可扩展性、更大的可寻址内存、视频/音频/三维处理或较高计算准确性的应用程序而言,AMD 64处理器可提供卓越的性能。


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

java

Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

简介

它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,以“Java”的名称正式发布。   

参考技术A 所谓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位计算系统所遇到的瓶颈现象,速度快人一等,对于那些要求多处理器可扩展性、更大的可寻址内存、视频/音频/三维处理或较高计算准确性的应用程序而言,AMD 64处理器可提供卓越的性能。

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

补充一句,在使用java参数-xms -xmx定义堆大小的时候,
1. 如果是32bit的jvm超过4G肯定是没用的,定义了4G,最终使用到的可能只有2G
2. 这两个值最好定义成一样,可以减少java gc的操作,有小幅度性能提高
参考技术B 64位只适用于64位操作系统,针对64位操作系统做了相关优化和兼容,32位可在32位和64位操作系统上同时跑,由于32位操作系统原则上最大支持4G内存限制,所以对于32位虚拟机而言,所占内存也不可大于4G,而在64位虚拟机里,基本可定义为内存无限制,所以服务器一般都跑在64位操作系统里。而对于JAVA而言,代码都一样,一处编写,随处运行,在这个层面上没有什么区别。 参考技术C 功能上没有区别,唯一的区别在于:64位的java只能装载64的操作系统上,32位的java只能装载32的操作系统上。本回答被提问者和网友采纳 参考技术D 功能上没有区别,唯一的区别在于:64位的java只能装载64的操作系统上,32位的java只能装载32的操作系统上。

Java每日算法--给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123
输出:321
示例 2

输入:x = -123
输出:-321
示例 3

输入:x = 120
输出:21
示例 4

输入:x = 0
输出:0

提示:

-231 <= x <= 231 - 1

来源:力扣(LeetCode)

解法:

public static int reverse(int x) {
        if (x > 230 || x < -231 || x == 0) {
            return 0;
        }
        //记录反转后的数据
        int result = 0;
        // 假如 x = 210 
        // 1次遍历  tmp = 0; result = 0; x = 21
        // 2次遍历 tmp = 0; result = 1 ; x = 2
        // 3次遍历 tmp = 1; result = 12 ; x = 0 此进循环结束,输出 12

        //假如 x = -123
        // 1次遍历  tmp = 0; result = -3; x = -12
        // 2次遍历 tmp = -3; result = -32 ; x = -1
        // 3次遍历 tmp = -32; result = -321 ; x = 0
        while (x != 0) {
            //保存临时的结果
            int tmp = result;
            result = result * 10 + x % 10;
            x = x / 10;
            // 将计算之后的结果 / 10,判断是否与计算之前相同,如果不同,证明发生溢出,返回0
            if(result / 10 != tmp){
                return  0;
            }
        }
        return result;
    }

项目地址:https://gitee.com/charlinchenlin/wysmall

以上是关于64位的Java与32位的有啥不同的主要内容,如果未能解决你的问题,请参考以下文章

电脑32位和64位有啥区别 电脑32位和64位的区别

32位和64位有啥区别 32位和64位区别都有哪些

32位与64位的区别是啥,64位系统有啥优势

Win7 32位和64位有啥区别?装哪个好?

操作系统 32bit 和 64bit 有啥区别

32位与64位操作系统具体有啥区别?