I’m 99% sure the answer to that question is no, but I thought I’d ask
anyway
Practically speaking it’s only of use to me if it can be done on MRI
(Ruby 1.8).
Trivially I can do something like (apologies for the hackiness, and
not using the sysutil gem):
def memory_used
File.read("/proc/#$$/status").match(/^VmSize:\s*(\d*)/)[1].to_i
end
mem_used = memory_used()
mem_used_since = memory_used - mem_used # Returns difference in KB
since mem_used was set
But that only tells me something about the Ruby process, not a
particular object.
The reason I ask is because I would like to create a cache object that
stores complex objects, but is smart enough to remove the oldest
things in the cache when the cache is using more than a certain amount
of memory.
I could Marshall.dump the objects and work out something crudely that
way, but the reason I want the cache in the first place is because
Marshall.dump and Marshall.load is too time expensive
Thanks
-Rob