Размер слота для мусора Ruby - PullRequest
5 голосов
/ 04 октября 2010

Итак, в документации ruby ​​enterprise указано, что все значения в настройках GC определены в слотах: http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuning

(например, RUBY_HEAP_MIN_SLOTS)

Мы точно настроили минимальный размер и приращение слота нашего приложения для лучшей производительности методом проб и ошибок (у нас достаточно машин, чтобы получить представление о том, как различные значения влияют на количество вызовов malloc и Full GC).

Но что-то меня давно беспокоило: насколько велик 1 слот в байтах?

Ответы [ 4 ]

4 голосов
/ 06 сентября 2013

Из рубинового источника:

 *  sizeof(RVALUE) is
 *  20 if 32-bit, double is 4-byte aligned
 *  24 if 32-bit, double is 8-byte aligned
 *  40 if 64-bit
3 голосов
/ 23 марта 2011
$ rvm use ruby-1.9.2-p136
$ gdb ruby
(gdb) p sizeof(RVALUE)
$1 = 40
1 голос
/ 05 октября 2010

После копания через код:

1 slot - это размер sizeof(struct RVALUE), который зависит от машины.

1 голос
/ 04 октября 2010

Значение по умолчанию в 1.9 - 8K

http://svn.ruby -lang.org / репо / рубин / багажник / gc.c (поиск HEAP_SIZE)

Обратите внимание, что всякий раз, когда ему не хватает места и его необходимо перераспределить, в 1.9 он выделяет экспоненциально больше куч.

В 1.8 он бы выделил все больше и больше куч.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...