From aa6601407de28cad2a3af40a0ad3e6d9eec78e35 Mon Sep 17 00:00:00 2001
From: Dominik Gleich <dominik.gleich@memgraph.io>
Date: Fri, 19 May 2017 11:05:38 +0200
Subject: [PATCH] 'Memory leak' fix.

Summary: Memgraph seemed like it leaked memory while in fact it was just keeping it close by. By forcing release of free memory on top of heap back to the operating system we are making sure we are not using more memory than we have to in any given moment.

Reviewers: mferencevic, buda

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D385
---
 src/storage/deferred_deleter.hpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/storage/deferred_deleter.hpp b/src/storage/deferred_deleter.hpp
index 0630c0462..337ca9e29 100644
--- a/src/storage/deferred_deleter.hpp
+++ b/src/storage/deferred_deleter.hpp
@@ -1,5 +1,7 @@
 #pragma once
 
+#include <malloc.h>
+
 #include <list>
 
 #include "mvcc/id.hpp"
@@ -48,6 +50,12 @@ class DeferredDeleter {
       ++it;
     }
     objects_.erase(objects_.begin(), it);
+    // After deleting objects - to force release of now deleted (free) memory
+    // back to OS we need to call malloc_trim. This will force memgraph to
+    // return memory from top of the heap to OS. If we don't use this, it seems
+    // to the outside observer we are leaking memory while in fact we are not,
+    // we were just keeping it close by in case we need it in near future.
+    malloc_trim(0);
   }
 
   /**