2012-12-10 14 views
7

Czy istnieje funkcja w ruby, aby znaleźć pamięć używaną przez obiekt ruby.
Podobny do C ma funkcję sizeof(), a PHP ma funkcję memory_get_usage(). Czy ruby ​​mają równoważną funkcję/metodę?Jak znaleźć pamięć używaną przez obiekt ruby?

+4

Prawdopodobnie duplikat: http://stackoverflow.com/questions/3973094/how-to-measure-the-size-of-a-ruby-object – Matt

+0

@Matt - Thank you. –

+1

Jestem ciekawy: jaki jest cel twojego pytania? Czy chcesz znać rozmiar obiektu lub czy próbujesz ustalić, ile pamięci zajmie duża liczba określonych obiektów? – Sim

Odpowiedz

2

Jest to odcinek, ale jeśli celem jest szukanie przecieku pamięci, zamiast sprawdzić rozmiar poszczególnych obiektów, można spojrzeć na object_count(cls), jak w:

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

itp FWIW, symbole są trochę inaczej: można uzyskać zliczania symboli poprzez:

>> Symbol.all_symbols.count 
=> 17878 

Aby dowiedzieć się, czy masz wyciek nie można ręcznie wywołać GC, liczyć swoje obiekty, uruchomić kod na chwilę, ponownie wywołaj GC, a następnie zobacz, czy liczba obiektów znacznie wzrosła.

Oczywiście to nie mówi o wielkości każdego obiektu, tylko o tym, ile każdej klasy jest przydzielonych.

Jest też memprof, ale przyznaję, że jeszcze tego nie używałem.

+0

Jest to liczba obiektów w pamięci. Pierwotne pytanie, jak rozumiem, pyta, jak znaleźć wykorzystanie pamięci (w bajtach) pojedynczego obiektu. – Ariejan

+0

@Ariejan: W pełni się zgadzam. Dlatego powiedziałem: "* jeśli * twoim celem jest szukanie wycieku pamięci, zamiast widzieć rozmiar poszczególnych obiektów ..." –

Powiązane problemy