diff --git a/fxjs/gc/heap.cpp b/fxjs/gc/heap.cpp
index 02319eb..757d932 100644
--- a/fxjs/gc/heap.cpp
+++ b/fxjs/gc/heap.cpp
@@ -54,12 +54,13 @@
   }
 }
 
-std::unique_ptr<cppgc::Heap> FXGC_CreateHeap() {
+FXGCScopedHeap FXGC_CreateHeap() {
   ++g_platform_ref_count;
-  return cppgc::Heap::Create(std::make_shared<CFXGC_Platform>());
+  auto heap = cppgc::Heap::Create(std::make_shared<CFXGC_Platform>());
+  return FXGCScopedHeap(heap.release());
 }
 
-void FXGC_ReleaseHeap(std::unique_ptr<cppgc::Heap> heap) {
+void FXGCHeapDeleter::operator()(cppgc::Heap* heap) {
   --g_platform_ref_count;
-  // |heap| destroyed when it goes out of scope.
+  delete heap;
 }
diff --git a/fxjs/gc/heap.h b/fxjs/gc/heap.h
index 2e25517..7792cbc 100644
--- a/fxjs/gc/heap.h
+++ b/fxjs/gc/heap.h
@@ -10,10 +10,14 @@
 #include "v8/include/cppgc/heap.h"
 #include "v8/include/libplatform/libplatform.h"
 
+struct FXGCHeapDeleter {
+  void operator()(cppgc::Heap* heap);
+};
+
+using FXGCScopedHeap = std::unique_ptr<cppgc::Heap, FXGCHeapDeleter>;
+
 void FXGC_Initialize(v8::Platform* platform);
 void FXGC_Release();
-
-std::unique_ptr<cppgc::Heap> FXGC_CreateHeap();
-void FXGC_ReleaseHeap(std::unique_ptr<cppgc::Heap> heap);
+FXGCScopedHeap FXGC_CreateHeap();
 
 #endif  // FXJS_GC_HEAP_H_
diff --git a/fxjs/gc/heap_embeddertest.cpp b/fxjs/gc/heap_embeddertest.cpp
index 8ee42ca..77dc90b 100644
--- a/fxjs/gc/heap_embeddertest.cpp
+++ b/fxjs/gc/heap_embeddertest.cpp
@@ -9,23 +9,26 @@
 #include "testing/embedder_test.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-class HeapEmbedderTest : public EmbedderTest {};
+class HeapEmbedderTest : public EmbedderTest {
+ public:
+  void SetUp() override {
+    EmbedderTest::SetUp();
+    FXGC_Initialize(EmbedderTestEnvironment::GetInstance()->platform());
+  }
 
-TEST(HeapEmbedderTest, SeveralHeaps) {
-  FXGC_Initialize(EmbedderTestEnvironment::GetInstance()->platform());
+  void TearDown() override {
+    FXGC_Release();
+    EmbedderTest::TearDown();
+  }
+};
 
-  std::unique_ptr<cppgc::Heap> heap1 = FXGC_CreateHeap();
+TEST_F(HeapEmbedderTest, SeveralHeaps) {
+  FXGCScopedHeap heap1 = FXGC_CreateHeap();
   EXPECT_TRUE(heap1);
 
-  std::unique_ptr<cppgc::Heap> heap2 = FXGC_CreateHeap();
+  FXGCScopedHeap heap2 = FXGC_CreateHeap();
   EXPECT_TRUE(heap2);
 
-  std::unique_ptr<cppgc::Heap> heap3 = FXGC_CreateHeap();
+  FXGCScopedHeap heap3 = FXGC_CreateHeap();
   EXPECT_TRUE(heap2);
-
-  FXGC_ReleaseHeap(std::move(heap1));
-  FXGC_ReleaseHeap(std::move(heap2));
-  FXGC_ReleaseHeap(std::move(heap3));
-
-  FXGC_Release();
 }
