From a399be7f24d58080282316d1ec529bf5aed67634 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Tue, 24 Feb 2015 00:06:54 +0100 Subject: try hard to free heap memory after command-line termination using malloc_trim() * this is a Linux/glibc-only optimization --- src/cmdline.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cmdline.cpp b/src/cmdline.cpp index 83a90b4..599a469 100644 --- a/src/cmdline.cpp +++ b/src/cmdline.cpp @@ -19,6 +19,10 @@ #include "config.h" #endif +#ifdef HAVE_MALLOC_H +#include +#endif + #include #include @@ -446,10 +450,17 @@ Cmdline::process_edit_cmd(gchar key) str = NULL; len = rubout_len = 0; +#ifdef HAVE_MALLOC_TRIM /* - * FIXME: Perhaps to the malloc_trim() here - * instead of in UndoStack::clear() + * Glibc/Linux-only optimization: Undo stacks can grow very + * large - sometimes large enough to make the system + * swap and become unresponsive. + * This will often reduce the amount of memory previously + * freed that's still allocated to the program immediately + * when the command-line is terminated: */ + malloc_trim(0); +#endif } else { insert(key); } -- cgit v1.2.3