in src/sizes/retained_size_and_held_objects.cpp [70:82]
jvmtiError RetainedSizeAndHeldObjectsAction::estimateObjectSize(jobject &object, jlong &retainedSize, std::vector<jobject> &heldObjects) {
jvmtiError err = traverseHeapForTheFirstTime(object);
if (!isOk(err)) return err;
if (shouldStopExecution()) return MEMORY_AGENT_INTERRUPTED_ERROR;
err = traverseHeapFromStartObjectAndCountRetainedSize(object, retainedSize);
if (!isOk(err)) return err;
if (shouldStopExecution()) return MEMORY_AGENT_INTERRUPTED_ERROR;
logger::debug("collect held objects");
progressManager.updateProgress(85, "Collecting held objects...");
return getObjectsByTags(jvmti, std::vector<jlong>{HELD_OBJECT_TAG}, heldObjects);
}