diff --git a/Lib/test/test_bigaddrspace.py b/Lib/test/test_bigaddrspace.py
index d383440..b8c59d4 100644
--- a/Lib/test/test_bigaddrspace.py
+++ b/Lib/test/test_bigaddrspace.py
@@ -23,25 +23,34 @@
         # Allocate a bytestring that's near the maximum size allowed by
         # the address space, and then try to build a new, larger one through
         # concatenation.
-        x = b"x" * (MAX_Py_ssize_t - 128)
-        self.assertRaises(OverflowError, operator.add, x, b"x" * 128)
+        try:
+            x = b"x" * (MAX_Py_ssize_t - 128)
+            self.assertRaises(OverflowError, operator.add, x, b"x" * 128)
+        finally:
+            x = None
 
     @bigaddrspacetest
     def test_optimized_concat(self):
-        x = b"x" * (MAX_Py_ssize_t - 128)
+        try:
+            x = b"x" * (MAX_Py_ssize_t - 128)
 
-        with self.assertRaises(OverflowError) as cm:
-            # this statement uses a fast path in ceval.c
-            x = x + b"x" * 128
+            with self.assertRaises(OverflowError) as cm:
+                # this statement used a fast path in ceval.c
+                x = x + b"x" * 128
 
-        with self.assertRaises(OverflowError) as cm:
-            # this statement uses a fast path in ceval.c
-            x +=  b"x" * 128
+            with self.assertRaises(OverflowError) as cm:
+                # this statement used a fast path in ceval.c
+                x +=  b"x" * 128
+        finally:
+            x = None
 
     @bigaddrspacetest
     def test_repeat(self):
-        x = b"x" * (MAX_Py_ssize_t - 128)
-        self.assertRaises(OverflowError, operator.mul, x, 128)
+        try:
+            x = b"x" * (MAX_Py_ssize_t - 128)
+            self.assertRaises(OverflowError, operator.mul, x, 128)
+        finally:
+            x = None
 
 
 class StrTest(unittest.TestCase):
@@ -50,28 +59,37 @@
 
     @bigaddrspacetest
     def test_concat(self):
-        # Create a string half the size that would fill the address space
-        x = "x" * (MAX_Py_ssize_t // (2 * self.unicodesize))
-        # Unicode objects trigger MemoryError in case an operation that's
-        # going to cause a size overflow is executed
-        self.assertRaises(MemoryError, operator.add, x, x)
+        try:
+            # Create a string that would fill almost the address space
+            x = "x" * int(MAX_Py_ssize_t // (1.1 * self.unicodesize))
+            # Unicode objects trigger MemoryError in case an operation that's
+            # going to cause a size overflow is executed
+            self.assertRaises(MemoryError, operator.add, x, x)
+        finally:
+            x = None
 
     @bigaddrspacetest
     def test_optimized_concat(self):
-        x = "x" * (MAX_Py_ssize_t // (2 * self.unicodesize))
+        try:
+            x = "x" * int(MAX_Py_ssize_t // (1.1 * self.unicodesize))
 
-        with self.assertRaises(MemoryError) as cm:
-            # this statement uses a fast path in ceval.c
-            x = x + x
+            with self.assertRaises(MemoryError) as cm:
+                # this statement uses a fast path in ceval.c
+                x = x + x
 
-        with self.assertRaises(MemoryError) as cm:
-            # this statement uses a fast path in ceval.c
-            x +=  x
+            with self.assertRaises(MemoryError) as cm:
+                # this statement uses a fast path in ceval.c
+                x +=  x
+        finally:
+            x = None
 
     @bigaddrspacetest
     def test_repeat(self):
-        x = "x" * (MAX_Py_ssize_t // (2 * self.unicodesize))
-        self.assertRaises(MemoryError, operator.mul, x, 2)
+        try:
+            x = "x" * int(MAX_Py_ssize_t // (1.1 * self.unicodesize))
+            self.assertRaises(MemoryError, operator.mul, x, 2)
+        finally:
+            x = None
 
 
 def test_main():
