diff --git a/src/main/java/com/google/devtools/build/lib/bazel/dash/DashModule.java b/src/main/java/com/google/devtools/build/lib/bazel/dash/DashModule.java
index ac46df5..79c753f 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/dash/DashModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/dash/DashModule.java
@@ -67,17 +67,19 @@
  */
 public class DashModule extends BlazeModule {
   private static final int ONE_MB = 1024 * 1024;
+  private static final NoOpSender NO_OP_SENDER = new NoOpSender();
 
   private static final String DASH_SECRET_HEADER = "bazel-dash-secret";
 
+  private final ExecutorService executorService;
+
   private Sendable sender;
   private CommandEnvironment env;
-  private final ExecutorService executorService;
   private BuildData optionsBuildData;
 
   public DashModule() {
     // Make sure sender != null before we hop on the event bus.
-    sender = new NoOpSender();
+    sender = NO_OP_SENDER;
     executorService = Executors.newFixedThreadPool(5,
         new ThreadFactory() {
           @Override
@@ -96,6 +98,13 @@
   }
 
   @Override
+  public void afterCommand() {
+    this.sender = NO_OP_SENDER;
+    this.env = null;
+    this.optionsBuildData = null;
+  }
+
+  @Override
   public Iterable<Class<? extends OptionsBase>> getCommandOptions(Command command) {
     return (command.name().equals("build") || command.name().equals("test"))
         ? ImmutableList.<Class<? extends OptionsBase>>of(DashOptions.class)
@@ -107,11 +116,11 @@
     DashOptions options = optionsProvider.getOptions(DashOptions.class);
     try {
       sender = (options == null || !options.useDash)
-          ? new NoOpSender()
+          ? NO_OP_SENDER
           : new Sender(options.url, options.secret, env, executorService);
     } catch (SenderException e) {
       env.getReporter().handle(e.toEvent());
-      sender = new NoOpSender();
+      sender = NO_OP_SENDER;
     }
     if (optionsBuildData != null) {
       sender.send("options", optionsBuildData);
@@ -360,5 +369,4 @@
     public void send(String suffix, BuildData message) {
     }
   }
-
 }
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BuildSummaryStatsModule.java b/src/main/java/com/google/devtools/build/lib/runtime/BuildSummaryStatsModule.java
index de79f05..73ba2f2 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BuildSummaryStatsModule.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BuildSummaryStatsModule.java
@@ -47,6 +47,13 @@
     eventBus.register(this);
   }
 
+  @Override
+  public void afterCommand() {
+    this.criticalPathComputer = null;
+    this.eventBus = null;
+    this.reporter = null;
+  }
+
   @Subscribe
   public void executionPhaseStarting(ExecutionStartingEvent event) {
     criticalPathComputer = new SimpleCriticalPathComputer(BlazeClock.instance());
