在Java 8中识别stacktrace中的lambdas

Sal*_*ake 6 java lambda jprofiler java-8

我试图使用JProfiler配置使用lambdas的Java应用程序.我无法识别,探查器将哪个lambda显示为热点:

探查器截图

我很感激任何帮助理解涉及lambdas的堆栈跟踪的格式,如"edu.indiana.soci.spidal.vectorclass.lambda $ PairwiseThread_SecDrv $ 23"

谢谢!

Ing*_*gel 3

不幸的是,没有直接的方法来识别 lambda,因为 lambda 本质上没有名称。在运行时,lambda 目前是使用匿名类实现的。它们在 $ 符号之后按照包含类的顺序编号。

如果在 JProfiler 中打开行号解析(会话设置->分析设置选项卡->自定义->“方法调用记录”选项卡上的复选框),您将在热点中的“运行”方法上看到行号回溯跟踪应该可以帮助您找到 lambda(如果它是该行上唯一的 lambda)。