Skip to content

Commit

Permalink
Fix VariableWidthData#getRetainedSize() estimate
Browse files Browse the repository at this point in the history
Previously, VariableWidthData would underestimate the retained size by
using ArrayList#size() instead of the underlying array capacity.
  • Loading branch information
pettyjamesm committed Feb 26, 2025
1 parent d210ae9 commit 3b3f15d
Showing 1 changed file with 3 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@

import com.google.common.primitives.Ints;
import io.airlift.slice.SizeOf;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;

import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

Expand All @@ -28,7 +28,6 @@
import static io.airlift.slice.SizeOf.SIZE_OF_LONG;
import static io.airlift.slice.SizeOf.instanceSize;
import static io.airlift.slice.SizeOf.sizeOf;
import static io.airlift.slice.SizeOf.sizeOfObjectArray;
import static io.trino.operator.FlatHash.sumExact;
import static java.lang.Math.addExact;
import static java.lang.Math.clamp;
Expand All @@ -48,7 +47,7 @@ public final class VariableWidthData
private static final VarHandle INT_HANDLE = MethodHandles.byteArrayViewVarHandle(int[].class, ByteOrder.LITTLE_ENDIAN);
public static final byte[] EMPTY_CHUNK = new byte[0];

private final List<byte[]> chunks = new ArrayList<>();
private final ObjectArrayList<byte[]> chunks = new ObjectArrayList<>();
private int openChunkOffset;

private long chunksRetainedSizeInBytes;
Expand Down Expand Up @@ -85,7 +84,7 @@ public long getRetainedSizeBytes()
return sumExact(
INSTANCE_SIZE,
chunksRetainedSizeInBytes,
sizeOfObjectArray(chunks.size()));
sizeOf(chunks.elements()));
}

public List<byte[]> getAllChunks()
Expand Down

0 comments on commit 3b3f15d

Please sign in to comment.