Systrace里面的VerifyClass是什么意思?

我正在看我的应用程序生成的systrace ,我已经确定了一个太长的框架。 这是由于充气我的项目视图时RecyclerViewonCreateViewHolder造成的。 项目视图与ConstraintLayout一样平坦。 但是下面的systrace报告有很多VerifyClass块,每块需要VerifyClass

VerifyClass块是什么意思?

在这里输入图像说明

Solutions Collecting From Web of "Systrace里面的VerifyClass是什么意思?"

很难说VerifyClass究竟在做什么,因为它不是Android Java SDK或ConstraintLayout的一部分。 我唯一提到的是SDK的C部分:

http://www.androidpolice.com/android_aosp_changelogs/android-m-preview-2-to-android-7.0.0_r1-AOSP-changelog.html

但我有几点build议:

1)尝试在发布模式下构build您的应用程序,看看您是否仍然存在FPS丢失问题。 我的假设是这个VerifyClass被执行debugging构build基准某些事情,但这只是一个猜测。

2)尽pipeConstraintLayout具有方便的API和平面层次结构(这对绘制遍历产生了积极的影响),但是它的测量和布局过程比其他Android Layouts 慢得多。 原因是约束计算的复杂性。 因此,在RecyclerView中使用它可能会在ViewHolder创build期间造成显着的性能损失。 如果列表单元格层次结构足够简单,我build议切换到一些香草布局,并检查行为。

不是一个真正的C ++ / Android运行时内部专家来清楚地解释VerifyClass定义的VerifyClass方法,并在/art/runtime/class_linker.cc中实现的意思,但我不会太在意CPU执行时间。

我要考虑的是您的RecyclerView项目包含ConstraintLayout并且其通货膨胀消耗CPU时间。

关于尝试发布版本的build议,它将不会有任何区别 – 对本地VerifyClass方法的调用将针对debugging版本和发布版本完成。