San*_*kar 8 ruby memory-management
在ruby中是否有任何函数,以查找ruby对象使用的内存.
类似于C具有该sizeof()功能并且PHP具有该memory_get_usage()功能.ruby是否具有等效的功能/方法?
ObjectSpace#memsize_of 来自 Ruby 文档:
返回obj消耗的内存大小。
[1] pry(main)> require 'objspace'
=> true
[2] pry(main)> ObjectSpace.memsize_of('')
=> 40
[3] pry(main)> ObjectSpace.memsize_of([])
=> 40
[4] pry(main)> ObjectSpace.memsize_of(1..100)
=> 40
[5] pry(main)> ObjectSpace.memsize_of('X' * 100)
=> 141
[6] pry(main)> ObjectSpace.memsize_of(('X' * 100).chars)
=> 840
Run Code Online (Sandbox Code Playgroud)
这是一个延伸,但如果您的目标是查找内存泄漏,而不是查看单个对象的大小,您可能会查看object_count(cls),如下所示:
>> ObjectSpace.each_object(Object).count
=> 114629
>> ObjectSpace.each_object(Array).count
=> 10209
Run Code Online (Sandbox Code Playgroud)
FWIW,符号有点不同:您可以通过以下方式获取符号数量:
>> Symbol.all_symbols.count
=> 17878
Run Code Online (Sandbox Code Playgroud)
要查明是否存在泄漏,您可以手动调用 GC,对对象进行计数,运行代码一段时间,再次调用 GC,然后查看是否有任何对象计数显着增加。
当然,这并没有告诉您每个对象的大小,只是告诉您每个类分配了多少个。
还有memprof,但我承认我还没有使用过。
| 归档时间: |
|
| 查看次数: |
2670 次 |
| 最近记录: |