问题
- Ruby的内存结构是什么样?
- 为什么Ruby应用非常吃内存?
- 有什么方法可以优化内存使用?
内存结构
组成部分
- 栈 指针
- 堆 25/heap_page 10_000/slot
- heap page 408/slot HEAP_OBJ_LIMIT
- slot : 40bytes的RVALUE(RObject...) GC_HEAP_INIT_SLOTS
- 系统堆 : 数据
RUBY_GC_HEAP_GROWTH_FACTOR 1.8
参数优化
- RUBY_GC_HEAP_INIT_SLOTS: Ruby初始化slots数量,数量越大后续malloc次数越小
- RUBY_GC_HEAP_GROWTH_FACTOR: 内存分配增长因子
- RUBY_GC_MALLOC_LIMIT: GC触发条件之一, 分配内存超过限制后运行GC
- RUBY_GC_HEAP_FREE_SLOTS: 对堆空间free slot少于该参数是 触发GC