jvmtiError RetainedSizeAndHeldObjectsAction::traverseHeapFromStartObjectAndCountRetainedSize()

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;
}