Igor, have you been following Craig Latta's work with Naev/Spoon?
He's had to create some very interesting tools to track objects of various kinds in the image.
L On 9/1/12 6:31 PM, Igor Stasenko wrote:
my work image grown to 80Mb in size.. and i start growing suspicious about myself for forming a resource leak somewhere.. But as it appears, it is because of Nautilus. During my experiments with ObjC wrapper for NativeBoost, i used nautilus for showing more than 4000 Objective-C classes in browser.. Since all those objects are actually wrappers, they generated each time when i open a new browser window.. to explore an obj-c universe and to test bugs.. So i ended up with: ObjCClassWrapper allInstances size 31885 Now, about why cache doesn't cleaning up automatically: The only reference coming to particular instance of ObjC wrapper is from a ClassesIconCache class var, which is a weak key dictionary: {my class wrapper} -> [IconicButtonStateHolder] so, a {wrapper} is held weakly here, of course, while [its Icon] strongly, and so far so good. But the problem is that , [IconicButtonStateHolder] having following in it's arguments ivar: an Array(an ObjCClassWrapper), which is [my class wrapper], held strongly. of course, there is no way how it can disappear from system.. After doing "AbstractNautilusUI resetIconCaches" my image shrunk from 83Mb down to 43Mb, But i found that i still having a lot of ObjCClassWrapper hanging around and wonder why.. And this time, because one of the wrapper classes were held in HistoryCollection via Nautilus 'RecentClasses' classvar. I think, history should not keep a live object references.. but instead use symbolic names to refer to the target, because apparently you cannot go and browse the method/class if you deleted it from a system. So, after nilling out that class var, my image lost another 10Mb, down to 33Mb.. and Ben, you owe me a ... (o shit i don't drink beer ) oh ok.. you owe me 2 bug fixes in Nautilus :) P.S. i modified a pointer explorer to show only strong references to object(s), because weak ones are completely useless for fighting with resource leak problems and only add noise. With this change a lists produced by pointer explorer are much shorter and going straight to the point. So, i attaching .cs to the mail.. in case if someone find it useful.
-- Squeak from the very start (introduction to Squeak and Pharo Smalltalk for the (almost) complete and compleate beginner). https://www.youtube.com/playlist?list=PL6601A198DF14788D&feature=view_all