From: Vitaliy.Bibaev Date: Sun, 18 Feb 2018 12:59:14 +0000 (+0300) Subject: Send class bytecode using chunks with limited size X-Git-Tag: phpstorm/182.182~1 X-Git-Url: https://git.jetbrains.org/?p=idea%2Fcommunity.git;a=commitdiff_plain;h=be1c79f61b14fb2173087f17bc489409540e848d;hp=2ddea0bbef71896f4afec4e757d3b732193ae803;ds=sidebyside Send class bytecode using chunks with limited size --- diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/ClassLoadingUtils.java b/java/debugger/impl/src/com/intellij/debugger/impl/ClassLoadingUtils.java index 7001213118b5..aff9e949df89 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/ClassLoadingUtils.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/ClassLoadingUtils.java @@ -37,6 +37,7 @@ import java.util.List; * @author egor */ public class ClassLoadingUtils { + private static final int BATCH_SIZE = 4096; private ClassLoadingUtils() {} public static ClassLoaderReference getClassLoader(EvaluationContext context, DebugProcess process) throws EvaluateException { @@ -144,7 +145,14 @@ public class ClassLoadingUtils { for (byte b : bytes) { mirrors.add(((VirtualMachineProxyImpl)process.getVirtualMachineProxy()).mirrorOf(b)); } - reference.setValues(mirrors); + + int loaded = 0; + while (loaded < mirrors.size()) { + int chunkSize = Math.min(BATCH_SIZE, mirrors.size() - loaded); + reference.setValues(loaded, mirrors, loaded, chunkSize); + loaded += chunkSize; + } + return reference; } }