快速业务通道

驯服Tiger: 虚拟机更新 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

驯服Tiger: 虚拟机更新

时间:2011-01-31 IBM John Zukowski

在驯服 Tiger 的这一期中,John Zukowski 介绍了最新的 Java 虚拟机如何改善启动时间、降低内存需求、提高性能。Tiger 提供了共享的数据档案文件、新的线程调度算法以及致命错误处理器(用来处理故障)。请在本文附带的 讨论论坛 上与作者和其他读者分享您对本文的想法。(也可以单击本文顶部或底部的 讨论 访问讨论论坛。)

致命错误处理器

JVM 包含几个新的命令行选项。其中一个不太标准的选项是“致命错误处理器”。用 -XX:OnError 选项启动 JVM,可以指定在发生错误和 JVM 有故障时要执行的命令。清单 1 显示了几个这样的选项:

清单 1. 一些 OnError 处理选项

-XX:OnError="gcore %p; dbx - %p" -XX:OnError="gdb %p" -XX:OnError="pmap %p"

JVM 中发生致命错误时,就会执行引号中的命令。%p 选项用进程 ID 替换。想故意制造些错误并不容易,但是如果偶然发现某种情况确实重复发生,那么通过处理器得到的信息是极有帮助的。

OnError 选项使用 Java 调试接口(Java Debug Interface,JDI) 服务性代理连接器桥(serviceability agent connector bridge)。有了这个桥,就能够连接核心文件或者已经安装的虚拟机,以及其他任务。如下所示,随 JDK 提供了几个诊断工具,它们利用了这个桥,但是最后三个工具在 Microsoft Windows 平台上不能用:

jps —— 得到进程 ID

jstat —— 得到进程 ID 的统计值(jstat -gc pid)

jinfo —— 得到 JVM 的配置信息

jmap —— 打印库的内存映射

jstack pid | core —— 生成堆栈跟踪

类数据共享

为了帮助改善启动时间,JVM 现在和内存映射文件一起工作。这些文件在安装时创建,保存着系统类的内部表示方式。这样,在启动 JVM 时,就不会从头开始装入系统类,而是装入内存映射文件。这在两个方面提供了帮助。首先,差不多有一半内存映射文件是只读的,这意味着可以在多个并发运行的进程之间共享它们,从而在相当程度上减少了启动时间和需要的全部内存。其次,由于这些文件采用了 Java HotSpot 虚拟机能够使用的格式,所以永远不会发生需要内存来处理原始类文件的情况,这也改善了启动时间。

共享档案文件的位置依赖于平台。文件命名为 classes.jsa,其中 JSA 扩展代表 Java 共享档案(Java Shared Archive)。在 Microsoft Windows 平台上,可以在 jre\bin\client 中找到共享档案。在 Linux 平台上,位置是 jre/lib/[arch]/client。所有这些位置都基于 JAVA_HOME 根。

驯服Tiger: 虚拟机更新(2)

时间:2011-01-31 IBM John Zukowski

如果不喜欢这个文件,可以删除它。实际上,如果想重新生成这个文件,就必须删除它。请用 -Xshare:dump 命令行开关调用 java 命令来生成它。在执行的时候,可以得到类似清单 2 所示的输出 :

清单 2. 重新生成共享数据文件的命令输出

Loading classes to share ... done. Rewriting and unlinking classes ... done. Calculating hash values for String objects .. done. Calculating fingerprints ... done. Removing unshareable information ... done. Moving most read-only objects to shared space at 0x2aad0000 ... done. Moving common symbols to shared space at 0x2ae2e848 ... done. Moving remaining symbols to shared space at 0x2af51148 ... done. Moving string char arrays to shared space at 0x2af51bd8 ... done. Moving additional symbols to shared space at 0x2af

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号