在 Android 版本 <= 4.4 中,Traceview 按其执行顺序显示应用程序执行的所有功能。它是使用Profile.cc提供的 API 实现的。基本思想是,每当 dvm 进入/退出时,函数探查器都会记录该函数。这称为基于跟踪 (/method) 的分析。
但是,在 Android 版本 >= 5 代码库中,我无法找到基于跟踪/方法的分析器 (Profile.cc) 的实现。但是 ART 中有一个Profiler.cc,它基本上是一个基于采样的分析器。
谷歌文档说:
“虽然 Traceview 提供了有用的信息,但它在 Dalvik 上的结果受到了每个方法调用开销的影响,并且该工具的使用显着影响了运行时性能。
ART 添加了对没有这些限制的专用采样分析器的支持。这可以更准确地查看应用程序执行情况,而不会显着减慢。在 KitKat 版本中,Dalvik 的 Traceview 中添加了采样支持。"
所以我的问题是:
Android 版本 5 是否支持基于 Trace (/method) 的分析?如果是,实现代码在哪里?
如果 ART 仅使用基于采样的分析,那么如何记录 Android 应用程序执行的每个方法?基于采样的分析器可能会错过方法执行,对吗?
提前致谢,