diff --git a/src/OpenFOAM/db/objectRegistry/objectRegistry.C b/src/OpenFOAM/db/objectRegistry/objectRegistry.C
index e3310a4007e3c91ae6125403f4aa230e9a61d3a6..ad1e7e0cf6b06c9226e04f20b49f58a8a98d5e55 100644
--- a/src/OpenFOAM/db/objectRegistry/objectRegistry.C
+++ b/src/OpenFOAM/db/objectRegistry/objectRegistry.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2015-2018 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2015-2019 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -85,21 +85,7 @@ Foam::objectRegistry::objectRegistry(const IOobject& io, const label nObjects)
 
 Foam::objectRegistry::~objectRegistry()
 {
-    List<regIOobject*> myObjects(size());
-    label nObjects = 0;
-
-    for (iterator iter = begin(); iter != end(); ++iter)
-    {
-        if (iter.val()->ownedByRegistry())
-        {
-            myObjects[nObjects++] = iter.val();
-        }
-    }
-
-    for (label i=0; i < nObjects; ++i)
-    {
-        checkOut(*myObjects[i]);
-    }
+    objectRegistry::clear();
 }
 
 
@@ -265,6 +251,30 @@ bool Foam::objectRegistry::checkOut(regIOobject& io) const
 }
 
 
+void Foam::objectRegistry::clear()
+{
+    // Free anything owned by the registry
+    for (iterator iter = begin(); iter != end(); ++iter)
+    {
+        regIOobject* ptr = iter.val();
+
+        if (ptr && ptr->ownedByRegistry())
+        {
+            delete ptr;
+        }
+    }
+
+    HashTable<regIOobject*>::clear();
+}
+
+
+void Foam::objectRegistry::clearStorage()
+{
+    objectRegistry::clear();
+    HashTable<regIOobject*>::clearStorage();
+}
+
+
 void Foam::objectRegistry::rename(const word& newName)
 {
     regIOobject::rename(newName);
diff --git a/src/OpenFOAM/db/objectRegistry/objectRegistry.H b/src/OpenFOAM/db/objectRegistry/objectRegistry.H
index f5fafbe51023d7aaa603091405d6559a38a6b8f0..8f94499ff7dee33364b5542fe81d27356ae3e7f4 100644
--- a/src/OpenFOAM/db/objectRegistry/objectRegistry.H
+++ b/src/OpenFOAM/db/objectRegistry/objectRegistry.H
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2016-2018 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2016-2019 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -430,15 +430,22 @@ public:
 
     // Edit
 
-        //- Rename
-        virtual void rename(const word& newName);
-
         //- Add a regIOobject to registry
         bool checkIn(regIOobject& io) const;
 
         //- Remove a regIOobject from registry
         bool checkOut(regIOobject& io) const;
 
+        //- Clear all entries from the registry
+        //  Performs a checkOut() for all objects that are ownedByRegistry
+        void clear();
+
+        //- Clear all entries from the registry and the table itself.
+        void clearStorage();
+
+        //- Rename
+        virtual void rename(const word& newName);
+
 
     // Reading