diff --git a/pkg/vm_service/test/common/test_helper.dart b/pkg/vm_service/test/common/test_helper.dart
index 4100c68..8415c74 100644
--- a/pkg/vm_service/test/common/test_helper.dart
+++ b/pkg/vm_service/test/common/test_helper.dart
@@ -349,10 +349,6 @@
     });
     await service.streamListen(EventStreams.kIsolate);
 
-    await service.streamListen(EventStreams.kIsolate);
-
-    await service.streamListen(EventStreams.kIsolate);
-
     // The isolate may have started before we subscribed.
     vm = await service.getVM();
     if (vmIsolates.isNotEmpty) {
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index 1578f69..ac5c703 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -3643,7 +3643,7 @@
     weak.set_key(key);
     weak.set_value(value);
   }
-  GCTestHelper::CollectAllGarbage();
+  GCTestHelper::CollectNewSpace();
   EXPECT(weak.key() != Object::null());
   EXPECT(weak.value() != Object::null());
 }
@@ -3668,7 +3668,7 @@
     weak2.set_key(key2);
     weak2.set_value(value2);
   }
-  GCTestHelper::CollectAllGarbage();
+  GCTestHelper::CollectNewSpace();
   EXPECT(weak1.key() != Object::null());
   EXPECT(weak1.value() != Object::null());
   EXPECT(weak2.key() != Object::null());
@@ -3693,7 +3693,7 @@
     weak2.set_key(key);
     weak2.set_value(value2);
   }
-  GCTestHelper::CollectAllGarbage();
+  GCTestHelper::CollectNewSpace();
   EXPECT(weak1.key() != Object::null());
   EXPECT(weak1.value() != Object::null());
   EXPECT(weak2.key() != Object::null());
@@ -3783,7 +3783,7 @@
     key ^= OneByteString::null();
     value ^= OneByteString::null();
   }
-  GCTestHelper::CollectAllGarbage();
+  GCTestHelper::CollectNewSpace();
   EXPECT(weak.key() == Object::null());
   EXPECT(weak.value() == Object::null());
 }
@@ -3806,7 +3806,7 @@
     weak2.set_key(key);
     weak2.set_value(value2);
   }
-  GCTestHelper::CollectAllGarbage();
+  GCTestHelper::CollectNewSpace();
   EXPECT(weak1.key() == Object::null());
   EXPECT(weak1.value() == Object::null());
   EXPECT(weak2.key() == Object::null());
@@ -3869,7 +3869,13 @@
     weak.set_target(target);
     weak.SetTypeArguments(type_arguments);
   }
-  GCTestHelper::CollectAllGarbage();
+
+  if (space == Heap::kNew) {
+    GCTestHelper::CollectNewSpace();
+  } else {
+    GCTestHelper::CollectAllGarbage();
+  }
+
   EXPECT(weak.target() != Object::null());
   EXPECT(weak.GetTypeArguments() != Object::null());
 }
@@ -3894,7 +3900,13 @@
     weak.set_target(target);
     weak.SetTypeArguments(type_arguments);
   }
-  GCTestHelper::CollectAllGarbage();
+
+  if (space == Heap::kNew) {
+    GCTestHelper::CollectNewSpace();
+  } else {
+    GCTestHelper::CollectAllGarbage();
+  }
+
   EXPECT(weak.target() == Object::null());
   EXPECT(weak.GetTypeArguments() != Object::null());
 }
@@ -3927,7 +3939,13 @@
     weak_property.set_key(key);
     weak_property.set_value(weak_reference);
   }
-  GCTestHelper::CollectAllGarbage();
+
+  if (space == Heap::kNew) {
+    GCTestHelper::CollectNewSpace();
+  } else {
+    GCTestHelper::CollectAllGarbage();
+  }
+
   const auto& weak_reference =
       WeakReference::CheckedHandle(Z, weak_property.value());
   EXPECT(weak_reference.target() == Object::null());
@@ -3964,7 +3982,13 @@
     weak_property.set_key(key);
     weak_property.set_value(weak_reference);
   }
-  GCTestHelper::CollectAllGarbage();
+
+  if (space == Heap::kNew) {
+    GCTestHelper::CollectNewSpace();
+  } else {
+    GCTestHelper::CollectAllGarbage();
+  }
+
   const auto& weak_reference =
       WeakReference::CheckedHandle(Z, weak_property.value());
   EXPECT(weak_reference.target() != Object::null());
diff --git a/tools/VERSION b/tools/VERSION
index 36868b2..106f5a3 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 114
+PRERELEASE 115
 PRERELEASE_PATCH 0
\ No newline at end of file
