diff --git a/pkg/compiler/lib/src/common/ram_usage.dart b/pkg/compiler/lib/src/common/ram_usage.dart
index b094304..9974b64 100644
--- a/pkg/compiler/lib/src/common/ram_usage.dart
+++ b/pkg/compiler/lib/src/common/ram_usage.dart
@@ -25,21 +25,31 @@
     enable: true,
     silenceOutput: true,
   );
-  final observatoryUri = info.serverUri;
-  if (observatoryUri == null) return null;
-  final wsUri = 'ws://${observatoryUri.authority}${observatoryUri.path}ws';
-  final vmService = await vm_service_io.vmServiceConnectUri(wsUri);
-  int sum = 0;
-  for (final group in (await vmService.getVM()).isolateGroups!) {
+  final vmServiceWsUri = info.serverWebSocketUri?.toString();
+  if (vmServiceWsUri == null) return null;
+
+  final vmService = await vm_service_io.vmServiceConnectUri(vmServiceWsUri);
+  final vm = await vmService.getVM();
+
+  final nonSystemIsolateGroups = vm.isolateGroups;
+  final relevantSystemIsolateGroups = vm.systemIsolateGroups?.where(
+    (group) => group.name?.contains('dart2js') ?? false,
+  );
+
+  var relevantMemoryUsage = 0;
+  for (final group in [
+    ...?nonSystemIsolateGroups,
+    ...?relevantSystemIsolateGroups,
+  ]) {
     final usage = await vmService.getIsolateGroupMemoryUsage(group.id!);
-    sum += usage.heapCapacity!;
+    relevantMemoryUsage += usage.heapCapacity ?? 0;
   }
   vmService.dispose();
-  return sum;
+  return relevantMemoryUsage;
 }
 
-Future<String> currentHeapCapacityInMb() async {
+Future<String?> currentHeapCapacityInMb() async {
   final capacity = await _currentHeapCapacity();
-  if (capacity == null) return "N/A MB";
+  if (capacity == null || capacity == 0) return null;
   return "${(capacity / (1024 * 1024)).toStringAsFixed(3)} MB";
 }
diff --git a/pkg/compiler/lib/src/dart2js.dart b/pkg/compiler/lib/src/dart2js.dart
index d31425e..e4e9e4e 100644
--- a/pkg/compiler/lib/src/dart2js.dart
+++ b/pkg/compiler/lib/src/dart2js.dart
@@ -925,12 +925,16 @@
         break;
     }
 
+    final memoryUsed = await currentHeapCapacityInMb();
+    final memoryUsedString = memoryUsed != null
+        ? ' using $memoryUsed of memory'
+        : '';
+
     print(
       '$processName '
       '${_formatCharacterCount(inputSize)} $inputName to '
       '${_formatCharacterCount(outputSize)} $outputName in '
-      '${_formatDurationAsSeconds(wallclock.elapsed)} seconds using '
-      '${await currentHeapCapacityInMb()} of memory',
+      '${_formatDurationAsSeconds(wallclock.elapsed)} seconds$memoryUsedString',
     );
     if (primaryOutputSize != null && out != null) {
       diagnostic.info(
diff --git a/pkg/compiler/lib/src/dump_info.dart b/pkg/compiler/lib/src/dump_info.dart
index 5dca3d0..e796ff1 100644
--- a/pkg/compiler/lib/src/dump_info.dart
+++ b/pkg/compiler/lib/src/dump_info.dart
@@ -1891,7 +1891,7 @@
                   .mainFunction]
               as FunctionInfo,
       size: _dumpInfoData.programSize,
-      ramUsage: await currentHeapCapacityInMb(),
+      ramUsage: await currentHeapCapacityInMb() ?? 'N/A MB',
       dart2jsVersion: options.hasBuildId ? options.buildId : null,
       compilationMoment: DateTime.now(),
       compilationDuration: measurer.elapsedWallClock,
@@ -1975,7 +1975,7 @@
                   .mainFunction]
               as FunctionInfo,
       size: _dumpInfoData.programSize,
-      ramUsage: await currentHeapCapacityInMb(),
+      ramUsage: await currentHeapCapacityInMb() ?? 'N/A MB',
       dart2jsVersion: options.hasBuildId ? options.buildId : null,
       compilationMoment: DateTime.now(),
       compilationDuration: measurer.elapsedWallClock,
