科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件JROCKIT 5.0——轻松玩转JVM

JROCKIT 5.0——轻松玩转JVM

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  BEA JRockit Java虚拟机(JVM)所带来的不仅仅是性能的提升。本文探讨了JRockit 5.0 R26版本可用的一些管理和使用方面的特性

作者:中国IT实验室 来源:中国IT实验室 2007年8月24日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

远程调用Ctrl-Break Handler
  可以使用JRockit Management Console来远程调用Ctrl-Break Handler。存在一个对JRockitConsoleMBean的操作,称为runCtrlBreakHandlerWithResult。JRockit Management Console可以从属性浏览器调用对MBean的操作。这里有关于如何调用Ctrl-Break Handler的逐步描述。

  • 连接到一个运行中的JRockit。
  • 右击该连接,选择Browse Attributes。
  • 展开com.jrockit domain文件夹,选择JRockitConsole MBean。
  • 单击operations选项卡,查看可用操作。
  • 单击String parameter参数按钮,找到runCtrlBreakHandlerWithResult操作。
  • 输入希望执行的Ctrl-Break Handler名称。语法与ctrlhandler.act文件相同。按下OK。
  • 按下Execute按钮,执行操作。

  试着输入“help”作为参数,将会列出所有可用的Ctrl-Break Handler,如图1所示。


图1.从JRockit Management Console调用Ctrl-Break Handler(单击图片查看大图)

堆视图(试验性)
  当分析应用程序如何使用某种垃圾收集策略时,在每一次GC后对堆进行快照将会非常有帮助。这有助于开发人员研究数据,比如碎片/压缩以及算法通常如何执行。但是快照中包含如此多的数据量以至于查看它没有什么意义,因此JRockit团队开发了一个提供图形化表示的小工具,以便更好地进行说明。

  图2显示了一个快照的例子(使用的是一个非常早的JRockit 1.4.2预发布版本):

  每一排表示一次垃圾收集。左边是开始的堆,右边是结束的堆。堆显示的右边是一个可配置图形。实心白色区域表示空白堆,黑色区域是充实区(也就是填充了对象的区域),浅灰色区域是碎片区,红色、黄色和绿色区域是可配置图形。可以从命令行指定在可配置图形中显示什么。该工具依然很粗糙,对于用户也不够友好,不过毋庸置疑它对JRockit的终端用户非常有用,所以这是一个非常不错但是不能通用的工具。

code coverage(试验性)
  很多开发人员在以某种方式使用他们的应用程序时,使用code coverage分析来研究诸如代码库中的多少以及哪些部分正在运行之类的状况。测试人员喜欢使用code coverage来度量测试套件覆盖应用程序的比例。但是,对于大型应用程序,由code coverage工具所引起的性能开销通常是被禁止的。

  JRockit内置了高性能的行code coverage。当启用code coverage运行时,代码将由记录行命中的捕获器生成。一旦某行被命中并记录,就删除捕获器,JRockit可以继续以接近全速的速度运行。

  要使JRockit记录code coverage数据,必须指定一个命令行选项。

用法 -Xcodecoverage

  可以使用以下系统属性来控制该行为:

系统属性 描述
jrockit.codecoverage.filter=
<filterspec>
filterspec是个以分号(Windows)或冒号(Linux)隔开的筛选器字符串列表,它定义哪些类应当被覆盖。以“-”开头的筛选器字符串会被视为不应当覆盖的类。

  示例:
-Djrockit.codecoverage.filter=
java/util/Hashtable;com/bea/*;-com/bea/bla.*

jrockit.codecoverage.filterfile=
<filename>
设置包含筛选器定义的文件的文件名。文件格式为每行一个筛选器字符串。
jrockit.codecoverage.outputfile=
<filename>
设置存放输出的文件。如果写入<filename>_0,输出文件不能被打开,那么将尝试<filename>_1,以此类推。在多个JVM共享一个公共命令行的情况中,这可能会很有用。
jrockit.codecoverage.testid=
<id-string>
设置初始测试标识符。
jrockit.codecoverage.verbose 使code coverage更为详细。适用于在覆盖文件(均是纯文本文件)中执行文本比较。
jrockit.codecoverage.appendoutput 设置对输出文件的写入为追加而不是覆盖。

  这里给出特定于code coverage的参数,用于生成如下图中所示的数据。

-Xcodecoverage -Djrockit.codecoverage.filter=com/jrockit/console/*;com/jrockit/common/* -Djrockit.codecoverage.outputfile=console_coverage.txt

  在内部,由一个code coverage小工具来解释JRockit所生成的数据,如图3所示。


图3:code coverage工具的输出示例

结束语
  BEA对Java运行时的掌控将其置于一个独一无二的位置:BEA交付了一些针对Java平台的低开销的管理和监控特性。很多针对BEA JRockit的有趣的管理和使用特性正在开发中。其中一些已经随着包含在JRockit 5.0 R26中的JRockit Mission Control而可以使用,更多特性也即将出现。更多信息请参见Mission Control home page。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章