Robert Klemme
10/3/2007 7:52:00 AM
On 24.09.2007 04:16, Eric Hodel wrote:
> On Sep 23, 2007, at 09:15, crb002@gmail.com wrote:
>
>> I have an application where I need to sort objects based on their
>> memory footprint. What is the easiest way to get this information
>> from Ruby1.6 ? I have no problem with having to call some C functions
>> to get this info.
>>
>> The hack Marshal.dump(foo).size() would work, but since this might be
>> called often I need an elegant solution.
>
> Look at the mem_inspect gem. It has hooks into the GC for Ruby 1.8.
>
> Marshal.dump(foo).size will include all the memory an object references,
> including the object's instance variables & etc. The Array ['x'*1024]
> takes up only a few bytes of memory, but Marshal.dump.size says 1032 bytes.
And that's the problem with all those memory inspection issues:
virtually no automated algorithm (that I know of) can automatically
decide which part of the object graph is supposed to be counted as
belonging to another object. And then there's still aliasing effects,
i.e. objects can be referenced by any number of other objects.
OP, what problem are you trying to solve?
Kind regards
robert