зеркало из https://github.com/github/ruby.git
io.c (fptr_finalize): free memory before GC sweep
This releases memory on explict calls to rb_io_close, reducing pressure on the GC. Final massif snapshot shows reduced heap usage after RubyGems load (valgrind --tool=massif ./ruby -e exit) before: mem_heap_B=4821992 mem_heap_extra_B=1302952 after: mem_heap_B=4791056 mem_heap_extra_B=1192440 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
cfc565796a
Коммит
3aab1f8467
|
@ -1,3 +1,8 @@
|
|||
Thu Oct 2 05:32:17 2014 Eric Wong <e@80x24.org>
|
||||
|
||||
* io.c (fptr_finalize): free memory before GC sweep
|
||||
[ruby-core:65269] [Feature #10295]
|
||||
|
||||
Thu Oct 2 05:27:24 2014 Eric Wong <e@80x24.org>
|
||||
|
||||
* marshal.c (w_class): check dump_arg->compat_tbl before lookup
|
||||
|
|
6
io.c
6
io.c
|
@ -4251,6 +4251,9 @@ maygvl_fclose(FILE *file, int keepgvl)
|
|||
return (int)(intptr_t)rb_thread_call_without_gvl(nogvl_fclose, file, RUBY_UBF_IO, 0);
|
||||
}
|
||||
|
||||
static void free_io_buffer(rb_io_buffer_t *buf);
|
||||
static void clear_codeconv(rb_io_t *fptr);
|
||||
|
||||
static void
|
||||
fptr_finalize(rb_io_t *fptr, int noraise)
|
||||
{
|
||||
|
@ -4312,6 +4315,9 @@ fptr_finalize(rb_io_t *fptr, int noraise)
|
|||
rb_exc_raise(err);
|
||||
}
|
||||
}
|
||||
free_io_buffer(&fptr->rbuf);
|
||||
free_io_buffer(&fptr->wbuf);
|
||||
clear_codeconv(fptr);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Загрузка…
Ссылка в новой задаче