diff options
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | gc.c | 4 | ||||
-rw-r--r-- | process.c | 1 |
3 files changed, 6 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index 30a1350fa6..70400dd797 100644 --- a/configure.ac +++ b/configure.ac @@ -2078,6 +2078,7 @@ AC_CHECK_FUNCS(lstat) AC_CHECK_FUNCS(lutimes) AC_CHECK_FUNCS(malloc_usable_size) AC_CHECK_FUNCS(malloc_size) +AC_CHECK_FUNCS(malloc_trim) AC_CHECK_FUNCS(mblen) AC_CHECK_FUNCS(memalign) AC_CHECK_FUNCS(memset_s) @@ -9740,6 +9740,10 @@ rb_gc_prepare_heap(void) rb_objspace_each_objects(gc_set_candidate_object_i, NULL); gc_start_internal(NULL, Qtrue, Qtrue, Qtrue, Qtrue, Qtrue); free_empty_pages(); + +#if defined(HAVE_MALLOC_TRIM) && !defined(RUBY_ALTERNATIVE_MALLOC_HEADER) + malloc_trim(0); +#endif } static int @@ -8789,6 +8789,7 @@ static VALUE rb_mProcID_Syscall; * * Precomputes the coderange of all strings. * * Frees all empty heap pages and increments the allocatable pages counter * by the number of pages freed. + * * Invoke +malloc_trim+ if available to free empty malloc pages. */ static VALUE |