Feature #15667 » ruby_gc_malloc_trim.patch
| configure.ac | ||
|---|---|---|
|
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)
|
||
| gc.c | ||
|---|---|---|
|
gc_prof_timer_start(objspace);
|
||
|
{
|
||
|
gc_marks(objspace, do_full_mark);
|
||
|
gc_marks(objspace, do_full_mark);
|
||
|
#ifdef HAVE_MALLOC_TRIM
|
||
|
/* [Experimental] Explicitly free all eligible pages to the kernel. See:
|
||
|
*
|
||
|
* - https://www.joyfulbikeshedding.com/blog/2019-03-14-what-causes-ruby-memory-bloat.html
|
||
|
* - https://bugs.ruby-lang.org/issues/15667
|
||
|
*/
|
||
|
if (do_full_mark) malloc_trim(0);
|
||
|
#endif
|
||
|
}
|
||
|
gc_prof_timer_stop(objspace);
|
||