使用实时Java进行开发,第2部分 改善服务质量 - 编程入门网
启动流程很容易实现,如清单 2 所示:
清单 2. 从一组类中以受控方式加载类
使用实时Java进行开发,第2部分 改善服务质量(3)时间:2011-01-27 IBM Mark Stoodley注意 clazz.getName() 调用,它强制执行类初始化。构建类列表需要在应用程序运行时从其中收集信息,或者使用一个实用工具来确定应用程序将加载哪些类。例如,可以使用 -verbose:class 选项在程序运行时捕获输出。清单 3 显示了在使用 IBM WebSphere Real Time 产品时,此命令的可能输出: 清单 3. 使用 -verbose:class 命令运行 java 的部分输出
通过存储应用程序在执行时将加载的类列表,并使用该列表填充 清单 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |