Send class bytecode using chunks with limited size
authorVitaliy.Bibaev <vitaliy.bibaev@jetbrains.com>
Sun, 18 Feb 2018 12:59:14 +0000 (15:59 +0300)
committerVitaliy.Bibaev <vitaliy.bibaev@jetbrains.com>
Sun, 18 Feb 2018 12:59:14 +0000 (15:59 +0300)
java/debugger/impl/src/com/intellij/debugger/impl/ClassLoadingUtils.java

index 7001213118b597082aeefa7c0dbfc4b4b3521b31..aff9e949df89615f9c65773e4890f4eeb1ece0a3 100644 (file)
@@ -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;
   }
 }