Add call to malloc_trim on a full GC
MODIFY
src/gc.c
src/gc.c
#include <string.h>
#include <stdlib.h>
+#ifdef HAS_MALLOC_TRIM
+#include <malloc.h>
+#endif
#include <mruby.h>
#include <mruby/array.h>
#include <mruby/class.h>
@@ -1319,6 +1322,9 @@ mrb_full_gc(mrb_state *mrb)
gc->full = FALSE;
}
+#ifdef HAS_MALLOC_TRIM
+ malloc_trim(0);
+#endif
GC_TIME_STOP_AND_REPORT;
}

MODIFY
tasks/toolchains/gcc.rake
tasks/toolchains/gcc.rake
@@ -31,6 +31,8 @@ MRuby::Toolchain.new(:gcc) do |conf, params|
end
[[conf.cc, 'c'], [conf.cxx, 'c++']].each do |cc, lang|
+ cc.defines += %w(HAS_MALLOC_TRIM) if cc.has_function? 'malloc_trim', with_header: 'malloc.h'
+
cc.instance_variable_set :@header_search_language, lang
def cc.header_search_paths
if @header_search_command != command

Add call to malloc_trim on a full GC