快速业务通道

使用实时Java进行开发,第2部分 改善服务质量 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
启动流程很容易实现,如清单 2 所示:

清单 2. 从一组类中以受控方式加载类

Iterator<String> classIt = listOfClassNamesToLoad.iterator(); while (classIt.hasNext()) {    String className = classIt.next();    try {      Class clazz = Class.forName(className);      String n=clazz.getName();    } catch (Exception e) {    System.err.println("Could not load class: " + className);    System.err.println(e); }

使用实时Java进行开发,第2部分 改善服务质量(3)

时间:2011-01-27 IBM Mark Stoodley

注意 clazz.getName() 调用,它强制执行类初始化。构建类列表需要在应用程序运行时从其中收集信息,或者使用一个实用工具来确定应用程序将加载哪些类。例如,可以使用 -verbose:class 选项在程序运行时捕获输出。清单 3 显示了在使用 IBM WebSphere Real Time 产品时,此命令的可能输出:

清单 3. 使用 -verbose:class 命令运行 java 的部分输出

...    class load: java/util/zip/ZipConstants    class load: java/util/zip/ZipFile    class load: java/util/jar/JarFile    class load: sun/misc/JavaUtilJarAccess    class load: java/util/jar/JavaUtilJarAccessImpl    class load: java/util/zip/ZipEntry    class load: java/util/jar/JarEntry    class load: java/util/jar/JarFile$JarFileEntry    class load: java/net/URLConnection    class load: java/net/JarURLConnection    class load: sun/net/www/protocol/jar/JarURLConnection    ...

通过存储应用程序在执行时将加载的类列表,并使用该列表填充 清单 2 中显示的循环的类名称列表,可以确保在应用程序开始运行之前加载这些类。当然,不同时刻执行应用程序可能加载不同的路径,所以一次执行的列表可能并不完整。出于此原因,如果应用程序正在开发之中,新编写或修改的代码可能依赖于未包含在列表中的新类(或者虽然包含在列表中,但不再需要的类)不幸的是,维护类列表可能是使用此方法预加载类的非常模麻烦的一部分。如果使用此方法,请记住,-verbose:class 输出的类名称与 -verbose:class does not match the format that''s needed by Class.forName() 需要的格式并不匹配:详细输出中使用正斜杠将类包分开,而 Class.forName() 期望用句点来分开它们。

对于存在类加载问题的应用程序,可以借助一些工具来管理预加载,包括 Real Time Class Analysis Tool (RATCAT) 和 IBM Real Time Application Execution Optimizer for Java(参见 参考资料)。这些工具能够在一定程度上自动识别要预加载的正确类列表,以及将类预加载代码合并到应用程序中。

JIT 代码编译暂停

JIT 优化示例

JIT 优化的一个初始示例是数组副本专业化。对于经常执行的方法,JIT 编译器可以分析特定数组副本调用的长度,确定是否有些长度是相同的。在分析调用一段时间之后,JIT 编译器可以发现数组副本长度几乎总是为 12 字节。了解这一点之后,JIT 可以为数组副本生成一个非常快速的路径,以对目标处理器最有效的方式直接复制所需的 12 字节。JIT 插入一个条件检查,查看长度是否为 12 字节,如果是,则执行这个极其高效的快速路径副本。如果长度不为 12,则生成一条不同路径来以默认方式执行副本,这可能需要更长的时间,因为它需要处理任何数组长度。如果应用程序中的大多数操作都是用快速路径,那么常见的操作延迟将基于直接复制这 12 字节所需的时间。但是与通用操作计时相比,需要具有不同长度的副本的任何操作都将被延迟。

JVM

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号