What does VerifyClass inside Systrace mean?

It's hard to say what VerifyClass is exactly doing, because it's not a part of Android Java SDK or ConstraintLayout. The only mention I found is in C part of SDK:

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

But I have couple of suggestions:

1) Try to build your app in release mode and see if you still have issues with FPS drop. My assumption is that this VerifyClass is executed for debug builds to benchmark certain things, but that's only a guess.

2) While ConstraintLayout has convenient API, and flat hierarchy (which positively affects drawing traversals) it still has much slower measuring and layout process than other Android Layouts. The reason for this is the complexity of constraints calculation. So using it in a RecyclerView might result a significant performance hit during ViewHolder creation. If the hierarchy of list cell is simple enough, I'd suggest switching to some vanilla layouts and check the behavior.


Not really an C++/Android Runtime internals expert to clearly explain what the VerifyClass method defined in /art/runtime/class_linker.h and implemented in /art/runtime/class_linker.cc means, but I wouldn't pay that much attention to its CPU execution time.

What I'd take into consideration is your RecyclerView items that contain ConstraintLayout and whose inflation consumes the CPU time.

Regarding the suggestion to try a release build, it won't make any difference - calls to the native VerifyClass method will be done for both debug and release builds.