in src/sizes/retained_size_by_classes.cpp [25:44]
jint JNICALL visitObjectForShallowAndRetainedSize(jlong classTag, jlong size, jlong *tagPtr, jint length, void *userData) {
if (*tagPtr == 0) {
return JVMTI_ITERATION_CONTINUE;
}
Tag *tag = tagToPointer(*tagPtr);
for (query_size_t i = 0; i < tag->array.getSize(); i++) {
const TagInfoArray::TagInfo &info = tag->array[i];
auto *arrays = reinterpret_cast<std::pair<jlong *, jlong *> *>(userData);
if (isRetained(info.state)) {
arrays->second[info.index] += size;
}
if (isStartObject(info.state)) {
arrays->first[info.index] += size;
}
}
return JVMTI_ITERATION_CONTINUE;
}