有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Mac OS X Leopard上的dtrace中使用热点探测?

我的Leopard系统内置了dtrace。我还使用苹果提供的安装程序安装了Java 6:

$ java -version
java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)
Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed mode)

然而,在列出探测时,dtrace不显示热点探测:

$ sudo dtrace -l | grep spot
$

有谁能告诉我如何在Leopard中启用针对Java的dtrace探测器(据推测它们随Java 6一起提供)


共 (3) 个答案

  1. # 1 楼答案

    我正在用Java 1.6运行Snow Leopard,我可以看到热点探测器:

    43223 hotspot_jni3644   libclient.dylib                   jni_AllocObject AllocObject-entry
    43224 hotspot_jni3644   libclient.dylib                   jni_AllocObject AllocObject-return
    43225 hotspot_jni3644   libclient.dylib           jni_AttachCurrentThread AttachCurrentThread-entry
    43226 hotspot_jni3644   libclient.dylib           jni_AttachCurrentThread AttachCurrentThread-return
    43227 hotspot_jni3644   libclient.dylib   jni_AttachCurrentThreadAsDaemon AttachCurrentThreadAsDaemon-entry
    43228 hotspot_jni3644   libclient.dylib   jni_AttachCurrentThreadAsDaemon AttachCurrentThreadAsDaemon-return
    43229 hotspot_jni3644   libclient.dylib             jni_CallBooleanMethod CallBooleanMethod-entry
    43230 hotspot_jni3644   libclient.dylib             jni_CallBooleanMethod CallBooleanMethod-return
    

  2. # 2 楼答案

    “嗯,很有意思。我正在运行相同的配置,但对我来说探测器没有显示。你使用了什么命令行?还有“sudo dtrace-l | grep spot”?”

    • 只是一次交叉检查。在发布“sudo dtrace-l | grep spot”时,应该有一个正在运行的java应用程序。只有这样,才会列出探针
  3. # 3 楼答案

    你确定这也适用于Apple JVM吗?虽然关于JDK 6的文档中提到了DTrace钩子,但您也可以在Non-standard Java HotSpot VM Options上找到(重点添加):

    -XX:-ExtendedDTrace探测可启用影响性能的dtrace探测
    (在6中介绍。仅与Solaris相关。

    如果这是特定于平台的,这不是一个好迹象。AFAIK Apple构建了自己的定制JVM