使用BTrace查找第一次创建类的时间

时间:2013-01-25 10:55:46

标签: java javolution btrace

我正在尝试使用BTrace来查找某个类型在我的程序中首次实例化(Eclipse调试器无法找到它),因为我看到了一些奇怪的行为(Javolution XMLStreamWriterImpl以某种方式添加了元素我之前的XML应该已经创建了。)

无论如何,我通过JVisualVM使用以下方法,但在运行时没有任何显示。

import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
import java.lang.String;

@BTrace
public class ClassLoad {
    @OnMethod(clazz = "javolution.xml.stream.XMLStreamWriterImpl", method = "<init>", location = @Location(value=Kind.NEW))
    public static void site(@ProbeMethodName(fqn=true) String caller) {
        println(strcat("Called from @", caller));
    }
}

1 个答案:

答案 0 :(得分:3)

您需要一个不同的 @OnMethod 定义。

@OnMethod(clazz="/.*/", method="/.*/", location=@Location(value=Kind.NEW, clazz="javolution.xml.stream.XMLStreamWriterImpl"))

基本上,您指定要检查所有类的所有方法是否出现 new javolution.xml.stream.XMLStreamWriterImpl 指令。

其余代码可以保持不变。