Fix valgrind tests

Delete large objects in space destructor. Also some cleanup.

Change-Id: I4c4e90149841a156b7a3236201b37683e14890fb
diff --git a/runtime/gc_root.h b/runtime/gc_root.h
index bdc7d5c..b67e9c2 100644
--- a/runtime/gc_root.h
+++ b/runtime/gc_root.h
@@ -162,6 +162,9 @@
   ALWAYS_INLINE GcRoot(MirrorType* ref = nullptr) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
 
  private:
+  // Root visitors take pointers to root_ and place the min CompressedReference** arrays. We use a
+  // CompressedReference<mirror::Object> here since it violates strict aliasing requirements to
+  // cast CompressedReference<MirrorType>* to CompressedReference<mirror::Object>*.
   mutable mirror::CompressedReference<mirror::Object> root_;
 
   template <size_t kBufferSize> friend class BufferedRootVisitor;