【问题标题】:JProfiler: Why Proxy class not display in the call tree?JProfiler:为什么代理类不显示在调用树中?
【发布时间】:2021-03-20 18:23:43
【问题描述】:

如果我用default compact config定义过滤器

我可以在call tree-1 中看到这样的调用(这是一个假客户端方法)

但是如果我定义过滤器profiled all my source package

我在call tree-2 中看不到任何调用

实际上,我希望看到一个树节点显示一个像这样的代理类调用 hello() 会更好 call stack

我该怎么办? Jprofiler 文档说如果分析记录显示在第一行,所有其他类都是紧凑的,所以我认为自动生成的代理类也是紧凑的,为什么这个代理类没有显示在调用树中?


试试 Ingo Kegel 博士的回答,得到了call tree-3。代理类调用feign.ReflectiveFeign$FeignInvocationHandler,为什么代理消失了?

【问题讨论】:

    标签: jprofiler


    【解决方案1】:

    如果您将调用树过滤器定义为com.example.,则$Proxy...ReflectiveFeing$FeingInvocationHandler 都不在已分析的类中。这意味着对此类方法的调用将进入最后一个分析类的节点的固有时间(在这种情况下为com.example....helloA),并且没有单独的节点。

    使用检测,JProfiler 不会记录 CPU 分析的完整调用堆栈。如果切换到采样,则可以禁用所有过滤器并获得完整的调用堆栈。

    【讨论】:

    • 我尝试使用 Full Sample 录制类型并禁用所有过滤器。仍然只有ReflectiveFeing$FeingInvocationHandler 节点,没有看到代理节点。我什么都试过了。我在分析的类中定义了ReflectiveFeing$FeingInvocationHandler,但在树节点中得到了一个未分析的图标。我很困惑。
    • 附加说明,配置文件列表:com.example.servicea.controller. + com.sun.proxy. + feign.ReflectiveFeign$FeignInvocationHandler。和最新版本的 JProfiler
    • 代理类确实有特殊处理,所以它们是隐藏的,但是对于feign.ReflectiveFeign$FeignInvocationHandler,我看到屏幕截图中的常规图标。
    • 是的,屏幕截图树 1 中的常规图标,但树 3 中的未配置图标,这是一个错误吗?我仍然希望代理节点显示在调用树中,它会更直观和可识别。不过,这没什么大不了的,对吧。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多