驯服Tiger: 虚拟机更新 - 编程入门网
驯服Tiger: 虚拟机更新时间:2011-01-31 IBM John Zukowski在驯服 Tiger 的这一期中,John Zukowski 介绍了最新的 Java 虚拟机如何改善启动时间、降低内存需求、提高性能。Tiger 提供了共享的数据档案文件、新的线程调度算法以及致命错误处理器(用来处理故障)。请在本文附带的 讨论论坛 上与作者和其他读者分享您对本文的想法。(也可以单击本文顶部或底部的 讨论 访问讨论论坛。) 致命错误处理器 JVM 包含几个新的命令行选项。其中一个不太标准的选项是“致命错误处理器”。用 -XX:OnError 选项启动 JVM,可以指定在发生错误和 JVM 有故障时要执行的命令。清单 1 显示了几个这样的选项: 清单 1. 一些 OnError 处理选项
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. 重新生成共享数据文件的命令输出
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |