rubyオブジェクトが使用するメモリを見つける関数はありますか?
C にsizeof()
機能があり、PHP に機能があるのと同様memory_get_usage()
です。Rubyには同等の機能/メソッドがありますか?
質問する
4739 次
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 に答える