in src/sizes/retained_size_via_dominator_tree.cpp [184:204]
jobjectArray RetainedSizesViaDominatorTreeAction::constructResultObject(jobjectArray objects,
const std::vector<jlong> &retainedSizes,
const SizesViaDominatorTreeHeapDumpInfo &info) {
jsize size = env->GetArrayLength(objects);
std::vector<jlong> shallowSizes;
std::vector<jlong> resultingRetainedSizes;
resultingRetainedSizes.reserve(size);
shallowSizes.reserve(size);
for (jsize i = 0; i < size; i++) {
jobject object = env->GetObjectArrayElement(objects, i);
jlong tag;
jvmti->GetTag(object, &tag);
resultingRetainedSizes.push_back(retainedSizes[tag]);
shallowSizes.push_back(info.sizes[tag]);
}
jobjectArray result = getObjectArrayOfSize(env, 2);
env->SetObjectArrayElement(result, 0, toJavaArray(env, shallowSizes));
env->SetObjectArrayElement(result, 1, toJavaArray(env, resultingRetainedSizes));
return result;
}