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

标签 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));
    }
}

最佳答案

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

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

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

其余代码可以保持不变。

关于java - 使用 BTrace 查找第一次创建类的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14520344/

相关文章:

java - 使用@Duration 注解时,BTrace 提供了哪些时间单位?毫、微米或纳米?在文档中找不到

java - 如何统计String中所有字符的出现次数?

java - 尝试将 uml 组合翻译成代码 [uml]

collections - javolution 6.0.0 中是否缺少 faSTList

java - COMPUTE_MAXS 正在删除 StackMapTable

java - 如何使用btrace

java - 使用 new 关键字创建单个对象

java - 如何链接 Wicket 下拉列表事件?

java - javolution 是否支持 unsigned64?