首页编程java编程java 32位和64位的区别是什么意思,64位的Java与32位的有什么不同

java 32位和64位的区别是什么意思,64位的Java与32位的有什么不同

编程之家2023-10-14103次浏览

大家好,今天来为大家分享java 32位和64位的区别是什么意思的一些知识点,和64位的Java与32位的有什么不同的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

java 32位和64位的区别是什么意思,64位的Java与32位的有什么不同

java 是64位还是32位

Java的关系有点复杂,可能和你想像的不一样

java里面分为编译java代码的jdk和运行java代码的jvm

jdk分32/64位,以便于在不同的平台上编译.java文件以生成.class文件

java 32位和64位的区别是什么意思,64位的Java与32位的有什么不同

jvm也分为32/64位,以便于在不同的平台上运行编译好的.class文件

但是注意,.class文件是平台独立的。换句话说.class文件不分32/64位。

例如,你在64位的平台上用64位的jdk编译了一个.class文件,然后可以直接拿到装有32位jvm的32位操作系统上。当然,你在64位的平台上用32位的jdk编译了一个.class文件,也可以直接拿到装有32位jvm的32位操作系统上。

java 32位和64位的区别是什么意思,64位的Java与32位的有什么不同

如果一个程序不是纯java项目(pure java code),那么不纯的java代码会有额外的平台调用。

eclipse就是一个很好的例子。他是java项目,但是包含了用本地方法实现的swt/jface组件,而swt/jface是平台相关的。所以这样的java项目就不具备可移植性

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

严格意义上来说,性能上会有一点差异,同样的程序迁移到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

补充一句,在使用java参数-xms-xmx定义堆大小的时候,

1.如果是32bit的jvm超过4G肯定是没用的,定义了4G,最终使用到的可能只有2G

2.这两个值最好定义成一样,可以减少java gc的操作,有小幅度性能提高

java 32位和64位的区别

下面我跟你详细的分析下32位和64位下Myeclipse、Tomcat以及JDK三者关系详解。这样的话你更容易理解一些

Myeclipse从9.0企业版开始有64位的安装包,本人用的为10.7版本,安装过程中会有选择支持的版本信息,如下图1所示。

图1

JDK和Tomcat也分32位和64位。三者之间协同工作的关系,以本人开发环境作详细介绍。JDK和Tomcat分别配置了32位和64位环境,如下图2中从上至下分别对应的是32位以及64位JDK(注意是JDK安装的根目录),图3中从上至下分别对应的是64位,64混合32位以及32位的Tomcat。

图3

下面以64位配置举例说明,如图4中所示,JDK的环境变量为D:\dev\Java64\jdk;如图5中所示,Tomcat的环境变量为D:\dev\apache-tomcat-7.0.63-x64,如需要切换,修改相应的值即可。

图5

在myeclipse的菜单栏,通过Window->Java->installed JREs即可进入修改开发过程中支撑项目工程的JDK,操作过程如图6中序号表示,这里选择Name为jdk64的64位JDK,在项目JRE System Library下即可查看支撑的JDK信息。

图6

在myeclipse的菜单栏,通过Window->Myeclipse->Servers->Tomcat->Tomcat 7.x即可设置项目工程部署到的Tomcat服务器(如图7所示),这里选择64位的Tomcat,如图8所示,展开Tomcat7.x,选择JDK,即可设置Tomcat运行基于的JDK(在用Myeclipse开发过程中,此JDK可以不配置系统环境变量。原因是Myeclipse会将此JDK作为内置JDK,细心的码友可以发现Myeclipse安装过程中自带的JDK是没有配置环境变量的,但Tomcat照样能运行。),这里选择Name为jdk64的64位JDK。项目部署运行即可在Console控制台看到JDK的信息,如图9所示。

注意:再次强调,用myeclipse开发测试的过程中,所用JDK可以不配置环境变量,Myeclipse会把选用的JDK作为内置JDK,开发过程中无需依托于系统环境变量。项目在开发完毕,导出war包并关闭Myeclipse后,若将war包工程部署到Tomcat,则需要依托系统的环境变量指定的JDK

问题:在Myeclipse开发过程中系统能访问Access数据库,但相应war包部署在Tomcat中后无法访问。

原因:开发时,图8中选择的是32位的JDK(即jdk32,如图10所示),但部署war包的Tomcat依托的系统环境是64位的JDK,如图4所示。

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 32位和64位的区别是什么意思和64位的Java与32位的有什么不同问题对您有所帮助,还望关注下本站哦!

java控制层是什么东西 java中dao层和service层的区别是什么api在java中是什么意思,JAVA的API是什么意思