9

rubyオブジェクトが使用するメモリを見つける関数はありますか?
C にsizeof()機能があり、PHP に機能があるのと同様memory_get_usage()です。Rubyには同等の機能/メソッドがありますか?

4

2 に答える 2

2

これは一筋縄ではいきませんが、目的が個々のオブジェクトのサイズを確認することではなく、メモリ リークを探すことである場合は、次のように を確認できますobject_count(cls)

>> ObjectSpace.each_object(Object).count
=> 114629
>> ObjectSpace.each_object(Array).count
=> 10209

など FWIW、シンボルは少し異なります。次の方法でシンボルの数を取得できます。

>> Symbol.all_symbols.count
=> 17878

not のリークがあるかどうかを調べるには、手動で GC を呼び出し、オブジェクトをカウントし、コードをしばらく実行し、GC を再度呼び出してから、オブジェクト数が大幅に増加しているかどうかを確認します。

もちろん、これは各オブジェクトのサイズを示すのではなく、各クラスがいくつ割り当てられているかを示しています。

memprofもありますが、まだ使用していないことを認めます。

于 2014-02-14T20:29:16.763 に答える