1、什么是JRockit?——是JVM Oracle JRockit (原来的 Bea JRockit)系列产品是一个全面的Java运行时解决方案组合,包括了行业最快的标准Java解决方案。 大量的行业基准测试显示,基本JRockit JVM是世界上最快的JVM。JRockit面向延迟敏感型应用的解决方案JRockit Real Time提供以毫秒或微秒计的JVM响应时间,适合财务前端办公、军事指挥与控制和电信网络的需要。使用JRockit产品,客户已经体验到了显著的性能提高(一些超过了70% )和硬件成本的减少(达50%)。
Oracle JRockit 5.0是专门为在基于英特尔处理器的高性能服务器上运行大规模的关键任务型的服务器端应用而设计 ,包括支持64位的英特尔至强和英特尔安腾处理器。 最新版本的BEA JRockit 5.0支持多种平台,包括Solaris OS、Red Flag Linux服务器以及基于SPARC的系列。 作为全球速度最快的面向大规模、关键任务型服务器端应用的Java虚拟机(JVM),JRockit令人印象深刻,它已建立起行业标准。 ” JRockit 5.0拥有一系列创新功能, 帮助开发人员在工作效率、可管理性、性能和稳定性方面达到新水平。 除了继续支持运行在Intel®处理器平台上的 Windows和Linux外,JRockit还首次可用于基于Solaris OS和SPARC的系统上。此外,BEA还与中科红旗软件公司达成协议,将BEA JRockit与Red Flag Linux服务器捆绑,为中国客户如中国邮政总局提供高性能的J2EE解决方案。今天,通过选择业界最快的Java虚拟机BEA JRockit,企业可在多种硬件平台和混合环境中使用单一的Java虚拟机,因为BEA JRockit为各种生产环境提供了一致的管理体验。 BEA JRockit Mission Control套件提供了可单独使用的性能工具,它为BEA JRockit的最新版本提供了补充。这个套件由几个独特的性能管理工具组成,可以 监控、管理、分析及排除Java应用中的内存泄 漏问题,而不会带来通常与这类工具有关的性能消耗问题,也不需要重启服务器来启动故障排除进程。 BEA JRockit Mission Control套件包括三个工具,为开发人员和系统管理员提供了前所未有的实时可见性和控制能力。这些功能可以帮助开发人员通过改变使用模式和业务环境, 来调整应用性能、确保系统质量。这些新工具包括: ·BEA JRockit管理控制台。 该工具捕获并展现有关垃圾收集停顿、内存利用和CPU使用的实时数据,以及来自Java虚拟机内部MBean服务器里面的JMX MBean信息。这项功能为开发人员和系统管理员控制网络内多个Java虚拟机实例提供了实时可见性和控制能力。 ·BEA JRockit运行时分析器(JRA)。 JRA就像是一个随需应变的“飞行记录器”,可以详细记录有Java虚拟机及应用运行的详细数据,帮助开发人员查看和分析应用在生产环境中的状况。 ·BEA JRockit内存泄漏检测器。 这是一种实时分析工具,用于发现和查找导致内存泄漏的原因。 BEA JRockit为WebLogic Real Time(WebLogic实时版本)产品提供坚实基础 BEA WebLogic实时版本旨在提供可预测的应用响应速率,以确保对时间敏感的交易能顺利进行,不会发生出乎意料的延迟。借助轻便的Spring框架,开发 人员能够得到混合开发环境的所有好处,同时维持原先无法企及的可预测执行时间。有了BEA JRockit及其独特的确定性垃圾收集器(仅作为即将推出的BEA WebLogic实时版本的一部分发布),就能够把Java技术应用于原本只有采用C语言编程才能实现的高性能应用领域。 WebLogic实时版本的目标就是要提高性能, 使业务部门的决策者能够确信:WebLogic实时版本可以满足他们在关键任务型应用响应方面的需求。” 2、oracle JRockit和sun JDK的比较 As we all know, JVM is responsible in converting the java byte code into machine code (which the machine understands) Sun jdk and Oracle JRockit do the same thing using different mechanism. ************************** Sun JDK uses interpreter(解释器) (Interpreter and JIT in previous releases)– In this mechanism, the byte code is read and then translated into machine language, but these results are not saved in the memory. So every time even if the same method is run again and again, the JVM has to translate the code into machine language. This means machine code will not be reusable as it is not saved anywhere in the memory. Oracle JRockit uses only JIT compiler (Just In Time) – JIT mechanism means, once a method is run, the byte code is translated to machine language and this is saved in the memory . This means if the method is run again, there is no need for translation and the machine code is reused. Because of the interpreter mechanism used by sun jdk, the start up time for the server is faster because it does not have to save the machine code in memory . Once the translation is done for a method, it moves to the other one. Where as oracle JRockit saves the code, which is why start up takes longer. For the same reason, oracle JRockit uses more memory than sun jdk. In the long run, JRockit gives a slightly better performance as compared to sun jdk. ************************** Oracle JRockit optimizes the code. It identifies the HOT SPOTS(热点方法) which means the methods that are being run more often. These methods are then queued up for optimization. This code is then optimized which improves performance. Many issues are seen becuase of the code optimization mechanism because it is a complex procedure. Optimization can be disabled. JIT is also used by Sun JDK, but that was in the earlier versions. The Java Hotspot VM removes the need for a JIT compiler in most cases. ************************** Memory spaces in jdks: Sun JDK has the following memory spaces: Eden space, survivior space, tenured generation and permanent generation. The objects move from one space to another according to its age and survival from garbage collection(垃圾回收). JRockit has 2 spaces, young generation and old generation, it uses the same mechanism of garbage collection. There is nothing called as permanent generation in JRockit. 此处参考下: http://blog.csdn.net/cymm_liu/article/details/24639127 ************************* Memory and other JVM tunings: JRockit gives advanced JVM tunings. From the release R26 and above, JRockit takes care of few tunings by itself. For example if there is an outofmemory occuring on the native TLA in previous releases due to insufficient TLA size which is 2k by default, in later releases the JRockit tunes these settings as per the requirement of the application. This has to be done and taken care of by the user in case of sun jdk. But then it is always better to be in a safer side it is recommended to have the tunings done by self. ************************* JVM Crashes(崩溃): When JRockit crashes, a JRockit dump is produced which basically has the reason for the crash. JRockit uses native libraries by default. This can be disabled by disabling the NativeIO from the admin console. The most common reason for the JRockit crash is the conflict between native libraries. For example, the jdbc type 2 drivers which use native libs. It is recommended to use type 4 pure java drivers when using oracle JRockit. Another reason for the crash can be code optimization because of its complexity. The stack trace in the JRockit dump will show the exact cause. When the JVm crashes, it is important to test it again by disabling code optimization and check if the issue still persists.
A sun jdk crash produces hs_err_pid file which has the root cause of the crash. There can be several reasons for sun jdk crash are due to bugs in them (defects in the code of the jdk). These issues need to be reported to the sun team.
**************************
Tools for performance tracking:
Sun jdk that comes bundled(捆绑) with weblogic server gives tools like JConsole which can be used for performance tracking and monitoring the memory in use of the JVM. This tool is very much necessary so that each and every detail about the memory being used by the application, cpu usage, memory leaks can be identified.
Oracle JRockit has a much more advanced tool JRMC (JRockit mission Control任务控制) which gives advanced tracking features. JRA recordings can be taken which gives each detail about the JVM arguements, garbage collection details, methods using the maximum memory etc. The memory leak detector tool in JRMC is also one important and very helpful tool. These make it easy for the user and administrators to maintain a record and identify the issues with the application and the JVM.