From 9a887c1159b8abe435ced512d5f84d349edb2d70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sat, 19 Dec 2020 12:53:32 +0100 Subject: [PATCH] Fixed allocation stacktrace logging. --- src/main/java/li/cil/oc2/common/vm/Allocator.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/li/cil/oc2/common/vm/Allocator.java b/src/main/java/li/cil/oc2/common/vm/Allocator.java index 9b9b60ab..75643698 100644 --- a/src/main/java/li/cil/oc2/common/vm/Allocator.java +++ b/src/main/java/li/cil/oc2/common/vm/Allocator.java @@ -4,8 +4,10 @@ import li.cil.oc2.Config; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.util.Arrays; import java.util.HashMap; import java.util.UUID; +import java.util.stream.Collectors; /** * Cooperative memory allocation limit enforcement. @@ -72,9 +74,10 @@ public final class Allocator { */ public static void resetAndCheckLeaks() { if (allocated > 0) { - LOGGER.error("Not all memory was released; leaked allocation stack traces follow."); for (final Allocation allocation : ALLOCATIONS.values()) { - LOGGER.error(allocation.stacktrace); + // Skip first three: Allocator::claimMemory, Allocation::new, Throwable::getStacktrace + LOGGER.error(Arrays.stream(allocation.stacktrace).skip(3).map(StackTraceElement::toString) + .collect(Collectors.joining("\n ", "Leaked memory allocation:\n ", ""))); } }