`
- 浏览:
211787 次
- 性别:
- 来自:
长沙
-
64位系统环境时Java的性能
如果你要买一辆车而且你的首要目标是性能或者更具体的说是原始动力,那么在4缸发动机和8缸发动机之间选择的话,答案很显然,因为越大越好。通常而言,当我们看计算机配置列表或者产品宣传的时候,64位的性能也比32位有优势,同样四核比双核更棒。
然而许多在大同世界里很简单的道理包括越多/大越好,移到计算机领域里就不是那么回事了。当处理多重CPU时,你会觉得那些多核所多出来的处理单元很有用,但如果你的工作仅仅是单线程的,那你要做的却是让其他核一边歇着。
32位与64位的比较则更加细微。x86-64 架构不仅在x86架构的基础上增大了寄存器,而且还增加了寄存器的数量。从基本上说这会带来更好的性能(因为更多的寄存器可以让编译器创建更好的机器代码)。然而很不幸,至今把Java从32位移到64位带来的只是性能的下降。
谈到Java的性能,runtime的两个方面很关键:JIT和GC。JIT的作用使尽可能快地执行代码;GC的作用是(在管理存储的同时)从代码的执行中抽取尽可能少的时间。因而Java的性能是让JIT(在更多存储器的帮助下)产生更多理想代码,并减少GC用以管理存储的时间(指针越大这越困难)
Java 9最初是设计为32位系统的而且这影响了我们在代码基(code base)做的一些早期决定。早几年前我曾花费不少时间试图在运行64位的PowerPC系统上运行我们的Smalltalk VM,得到的结论是:最直接的解决方式是让所有的数据结构(对象)变得两倍大来处理64位指针。随着Java 9的发展(大约2001),我们拿到手的最早的一个64位系统是一个Dec Alpha,所以我们采用了这种最直接的“变大”解决方法,允许一个通常的代码基既支持32位也支持64位。
64位CPU拥有更宽的数据总线,但是同样是这个64位CPU可以运行32位的代码,而且拥有同样宽的数据总线。回头看看我们64位的解决方案——将数据结构变得两倍大,效果却不如相同硬件上的32位,也就是说64位不及32位。这个问题不是Java 9也不是Java所独有的,因为所有的64位都需要数据扩展。只是说Java语言将这一问题凸显得更加明显,因为Java编程通常与创建、操控对象(也称数据结构)有关。
性能问题的解决方法是聪明地处理数据结构,这也正是我们在Java6 JDK中使用压缩列表特性(compressed references feature)所做的。我们可以玩小聪明而且不会被抓到,因为使用者(Java程序员)并不清楚Java对象更深处的表现。
折中的处理方法是通过在对象内存储更少的信息,限制可以被JVM使用的存储。这是一个相当不错的处理方法,因为计算机存储的规模远不及64位的极限地址范围。我们仅使用32位来存储指针,并充分利用8字节对象对齐(aligned objects)来得到一些空位(指针<< 3)。因此使用压缩列表(compressed references)——Xcompressedrefs,IBM Java6 JDK可寻址高达32Gb的堆。
并不只我们使用这种技巧,Oracle/BEA有-XXcompressedRefs,Sun有-XX:+UseCompressedOops。当然,不同厂商的方法在限制和支持等级上略有不同。也许你会有异议,但当用户运行到32位操作系统的堆栈极限时,他们就想要64位系统(同时还要不损失性能)。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
OpenJDK是Java Development Kit的开源实现,由Oracle、IBM、Red Hat等公司以及全球开发者社区共同维护。Zulu JDK的主要目标是提供一个跨平台、高性能、兼容性良好的Java运行环境。 Zulu8.50.0.51-ca-jdk8.0.275-win...
IBM的JDK在功能和性能上可能与标准的Java SE有所不同,它可能包含一些IBM特有的优化和功能,如更强的垃圾回收策略、安全特性、性能调优工具等。对于开发者来说,使用IBM JDK可能是因为它在特定场景下(如大型企业级...
此外,IBM可能还提供了一些特有的功能和工具,如性能分析器和诊断工具,以帮助开发者更好地理解和调优Java应用。 安装IBM JDK 1.5.0后,开发者可以在Windows 32位系统上设置环境变量,如JAVA_HOME、PATH等,以便于...
在学习和使用IBM JDK 1.5时,开发者应该熟悉其特定的命令行选项、性能调优策略以及与标准Java SE的差异。通过深入阅读IBM_jdk1.5_Guide.pdf,开发者可以掌握如何在AIX系统上部署和运行Java应用,同时利用IBM JDK 1.5...
文档还指出,哪些读者应该阅读这本书,包括使用IBM Java工具进行开发的开发者,以及那些需要对Java应用进行诊断和性能调优的技术支持人员。文档中还详细介绍了如何使用这本书,包括故障报告、约定和术语的说明,以及...
在IBM JDK 5中,垃圾收集(Garbage Collection, GC)是Java平台中至关重要的一个部分,用于自动管理内存,确保程序高效运行。垃圾收集策略的选择直接影响到应用程序的性能,特别是对于WebSphere Application Server...
8. **JVM参数调整**:与Oracle JDK相比,IBM JDK有自己的一套JVM参数,开发者需要熟悉这些特定的参数,以便于调优。 9. **企业服务支持**:IBM JDK通常与IBM其他企业级产品(如WebSphere Application Server)紧密...
- **选择合适的JDK版本**:根据客户所使用的操作系统类型选择相应的JDK版本,并推荐使用最新的版本以获得更好的兼容性和性能。 - **调整虚拟机内存配置**: - `-Xms<size>`:设置JVM初始化堆的大小。 - `-Xmx...
- **IBM J9 VM**:由IBM内部开发,主要用于IBM的产品和服务。 - **Apache Harmony**:一个开源的Java运行平台,但由于与Oracle的关系紧张,最终于2011年退役。 #### JVM规范 - **Java语言规范**:定义了Java语言的...
《xxx银行系统-WebSphere-was8.5原厂安装配置调优实战手册》是一本专注于IBM WebSphere Application Server 8.5在银行系统中的实践操作指南。WebSphere,简称WAS,是IBM推出的一款强大的企业级应用服务器,它支持...
### JVM性能调优知识点 #### 一、JVM基础知识 **1.1 Hotspot堆 — JDK6** - **新生代 (Young Generation)**: 包括Eden区和两个Survivor区(S0/S1),大部分对象在此阶段创建并消亡。 - **老年代 (Old Generation)*...
总结这次性能调优的经验,我们发现WebLogic在AIX服务器上运行缓慢的主要原因是它对IBM JDK的支持不足。为解决这个问题,采用WebLogic提供的性能包是关键。这个案例强调了了解应用服务器与其运行环境间的相互作用,...
6. 使用IBM JDK的调优实践 虽然文章开头提到了IBM JDK,但Oracle JDK与之有很多相似之处,因此所学的原理和方法同样适用于Oracle JDK。在IBM JDK的实践中,通常会用到JVM工具来监控GC性能,并进行必要的调整。例如,...
5、方法区:也称为永久代,存储类的信息、常量、静态变量等,JDK 8之后被元空间(Metaspace)取代,元空间使用的是本地内存而不是JVM堆。 垃圾回收(GC)是Java程序的重要组成部分,它负责自动清理不再使用的对象,...
- Java Development Kit (JDK):建议使用随WebSphere Application Server提供的JDK 1.1.6 - Java Servlet API:WebSphere Application Server自带JSDK 2.0或更高版本 - Web浏览器:Netscape Navigator 4.06/4.0.7、...
这可能涉及到选择适合应用的垃圾收集器,如IBM JDK 1.4.1及更高版本的默认收集器,以及调整垃圾收集的触发条件和频率。此外,Singleton模式和同步机制也可能影响内存管理,需要谨慎处理。 在实践中,通过分析Java...
- **Java软件版本**: JDK1.3.1 - **字体包文件集**: 包括Bos.adt.base、Bos.adt.lib、Bos.adt.libm、Bos.perf.perfstat等。 - **系统文件集**: 包括X11.apps.*、X11.base.*、X11.compat.*、X11.fnt.*、X11.motif....
### WAS V7 for AIX 6.1 安装与性能调优概要 #### 一、环境配置与准备 **环境配置信息:** - **机器名称/IP地址**:192.168.0.100 - **用户名/密码**:root/root - **操作系统版本**:AIX 6.1 with Recommended ...
- **AIX**:查看IBM的在线文档,学习如何优化AIX以适应WebLogic Server的运行环境。 - **Linux**:调整接口MTU(最大传输单元)可以改善网络性能,也可以参考`ipsysctl-tutorial`了解如何使用`sysctl`进行系统调优...