Ruby的GC.stat的领域是什么意思?

前端之家收集整理的这篇文章主要介绍了Ruby的GC.stat的领域是什么意思?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用GC.stat来配置我们的Rails应用程序的内存使用情况. GC.stat使用以下键返回散列:
:count
:heap_used
:heap_length
:heap_increment
:heap_live_num
:heap_free_num
:heap_final_num

有谁知道这些价值意味着什么?在Ruby源码(gc.c)中没有文档,只是一个注释:“哈希的内容是实现定义的,将来可能会被更改.”

这些领域中的一些在上下文中是有意义的,例如. count是Ruby分配的堆数.但是什么是heap_final_num?什么是heap_increment? heap_length是最小堆大小吗?

我正在使用RUBY_MIN_HEAP_SLOTS,RUBY_FREE_MIN和RUBY_GC_MALLOC_LIMIT,但更改这些env var似乎没有影响:heap_count或:heap_length.我会期望:如果我从根本上增加最小堆插槽,heap_count将下降.所以我真的想知道所有的GC.stat值代表什么!

我使用的是Ruby 1.9.3.

解决方法

:count – gc循环的数量,例如gc跑多少次

:heap_used – 分配的堆数,ruby默认创建一个堆,如果不足以分配所有对象,增加堆数

:heap_length – 堆的大小.这是第一个堆大小.理想情况下,脚本启动后应该有一个堆

:heap_increment – 如果ruby创建新堆将被添加到最后一个堆大小的数字

:heap_live_num – 分配了多少堆槽

:heap_free_num – 有多少个堆槽空闲

:heap_final_num – finalizer插槽号

你是对的,通过增加RUBY_MIN_HEAP_SLOTS堆的数量应该减少到1.但是越高的RUBY_FREE_MIN越多,你会得到.它表示当前堆应该具有的空闲槽数,如果该数量少于您提供的数量 – ruby​​会创建新堆.RUBY_GC_MALLOC_LIMIT与Ruby进程的运行频率有关,而不直接影响堆数.这个计数器表示在运行GC后有多少个malloc ruby​​.但是它可以运行得更早.请注意,它不是ruby对象分配,它是全球ruby内部malloc计数器,增加任何ruby解释器内部obj分配.

猜你在找的Ruby相关文章