在Java 8中识别stacktrace中的lambdas

时间:2015-04-03 16:20:27

标签: java lambda java-8 jprofiler

我正在尝试使用JProfiler来分析使用lambdas的Java应用程序。我无法识别,探查器将哪个lambda显示为热点:

profiler screenshot

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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

如果您打开JProfiler中的行号解析(会话设置 - >分析设置标签 - >自定义 - >"方法呼叫记录"标签上的复选框),您将看到一行"运行"热点回溯中的方法,如果它是该行上唯一的lambda,它可以帮助你找到lambda。