2012-12-10 7 views
7

ruby​​には、rubyオブジェクトで使用されるメモリを見つける関数があります。
Cにsizeof()関数があり、PHPにmemory_get_usage()関数がある方法に似ています。ルビは同等の関数/メソッドを持っていますか?ruby​​オブジェクトで使用されるメモリを見つける方法は?

+4

おそらく複製:http://stackoverflow.com/questions/3973094/how-to-measure-the-size-of-a-ruby-object – Matt

+0

@Matt - ありがとうございます。 –

+1

私は不思議です:あなたの質問の目的は何ですか?あなたはオブジェクトのサイズを知ることができるようにしたいのですか、または特定のオブジェクトの多数が取るメモリの量を把握しようとしていますか? – Sim

答えて

2

これはストレッチですが、あなたの目標は、メモリリークを探すのではなく、個々のオブジェクトのサイズを確認する場合、あなたはのように、object_count(cls)に見えるかもしれません:などFWIW

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

、シンボルは少し異なっている:あなたは経由シンボルの数を取得することができます:あなたがいないの漏れがある場合は、手動でしばらくの間、あなたのコードを実行して、あなたのオブジェクトを数え、GCを呼び出すことができます見つけるに

>> Symbol.all_symbols.count 
=> 17878 

、 GCをもう一度コールして、オブジェクト数が大幅に増加したかどうかを確認します。

もちろん、各オブジェクトのサイズは分かりませんが、割り当てられるクラスの数はどれだけですか。

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

+0

これはメモリ内のオブジェクトの数です。元の質問は、私が理解しているように、単一のオブジェクトのメモリ使用量(バイト単位)を調べる方法を尋ねます。 – Ariejan

+0

@Ariejan:完全に同意します。だからこそ私は「あなたの目標が個々のオブジェクトのサイズを見るのではなく、メモリリークを探すことだと言ったのです」 –

関連する問題