Одной из попыток, даже если это может значительно снизить производительность, является ручной запуск сборщика мусора путем частого вызова GC.start
. Как часто это бывает субъективно, чем больше вы запускаете его, тем медленнее приложение, и чем меньше оно запускается, тем больше занимает память.
По какой-то причине сборщик мусора может время от времени отправляться в отпуск, по-видимому, не желая вмешиваться, если происходит какая-то тяжелая обработка. Поэтому вам, возможно, придется вручную позвонить, чтобы забрать мусор.
Одним из способов избежать создания мусора является более эффективное использование памяти. Не создавайте хэши, когда массивы будут выполнять эту работу, не создавайте массивы, когда достаточно одной строки, и так далее. Будет важно профилировать ваше приложение, чтобы увидеть, какие объекты загромождают вашу кучу, прежде чем вы начнете случайным образом взламывать.
Если вы можете, попробуйте и используйте 1.9.2, который значительно улучшил управление памятью. Ruby Enterprise Edition также является опцией, если вам нужна совместимость с 1.8.7, так как это, по сути, лучший сборщик мусора для этой версии.