我正在开发一个从Redis数据库读取数据的Lettuce应用程序,我使用Lettuce库连接到Redis,后者又使用'Netty‘库与Redis通信--我怀疑我的应用程序的执行时间比预期的要长,所以使用JProfiler进行了一次分析实验,我感到惊讶的是,FastThreadLocalRunnable占用了执行时间的很大一部分,没有任何理由,因为树没有显示占用时间的函数调用:

那么,它是Lettuce库中的一个bug吗?还是在测量执行时间的分析器中出现了问题呢?
任何帮助都是非常感谢的。
编辑:
由于Ingo的回答,我现在可以扩展树,但是事实证明,java正在消耗我的处理器:

有什么想法吗?
发布于 2022-06-13 13:15:55
JProfiler中的调用树仅显示您在分析设置中定义的调用树筛选器中包含的类:

默认情况下,这排除了许多公共框架和库,这样您就可以在不配置任何东西的情况下开始工作。最好是删除这些过滤器,并在这里添加您自己的profiled包。
除了配置类之外,JProfiler还显示线程入口点,即使它不是配置类,比如io.netty.util.concurrent.FastThreadLocalRunnable。此外,对非剖析类的第一次调用总是显示在调用树的任何级别上。
在您的例子中,io.netty.util.concurrent.FastThreadLocalRunnable下面有对非profiled类的调用链,它们从不调用profiled类。它们可能属于某个框架或代码的某些部分,而这些部分不包含在已分析的类中。这一次必须去某个地方,所以它被归因于io.netty.util.concurrent.FastThreadLocalRunnable节点。
一种简单的检查方法是禁用分析设置中的筛选,然后看到所有类。

有关调用树筛选器的更多信息,请参见
https://www.ej-technologies.com/resources/jprofiler/help/doc/main/methodCallRecording.html
https://stackoverflow.com/questions/72601981
复制相似问题