in src/sizes/retained_size_and_held_objects.cpp [51:68]
jvmtiError RetainedSizeAndHeldObjectsAction::traverseHeapFromStartObjectAndCountRetainedSize(jobject &object, jlong &retainedSize) {
progressManager.updateProgress(80, "Traversing heap for the second time...");
retainedSize = 0;
jvmtiError err = FollowReferences(0, nullptr, object, secondTraversal, &retainedSize, "tag heap");
if (!isOk(err)) return err;
if (shouldStopExecution()) return MEMORY_AGENT_INTERRUPTED_ERROR;
err = jvmti->SetTag(object, HELD_OBJECT_TAG);
if (!isOk(err)) return err;
jlong startObjectSize = 0;
err = jvmti->GetObjectSize(object, &startObjectSize);
if (!isOk(err)) return err;
retainedSize += startObjectSize;
return JVMTI_ERROR_NONE;
}