Re: gobject patch to track memory use
- From: Alexander Larsson <alexl redhat com>
- To: Federico Mena Quintero <federico ximian com>
- Cc: "desktop-devel-list gnome org" <desktop-devel-list gnome org>
- Subject: Re: gobject patch to track memory use
- Date: Fri, 25 Feb 2005 08:20:08 +0100
On Thu, 2005-02-24 at 22:15 -0600, Federico Mena Quintero wrote:
> On Thu, 2005-02-24 at 18:23 +0100, Alexander Larsson wrote:
> > I spent some day today hacking up a patch to gobject that lets you track
> > what types of GObjects are using memory.
> >
> > It keeps a list of all live objects, and when you send the process a
> > SIGUSR2 it prints a memory profile. For the size it counts the basic
> > size of the object plus all private data registered with the object.
> >
> > Furthermore it adds some API that lets you register a function to
> > calculate the size an object uses. This is useful for objects that own
> > memory allocations that are not GObjects. I also made a gtk+ patch using
> > this to track the real size of GdkPixbuf object.
>
> This is very nice! Memprof only shows you mallocs grouped by stack
> trace, but sometimes you need the aggregated size of an object as it
> grows from auxiliary functions.
>
> I wonder if this patch could be obviated somehow by enhancing the
> memprof GUI to let you group related functions together. So, you would
> group
>
> foo_object_new()
> foo_object_grow_some_internal_buffer()
> foo_object_add_string()
> ... etc ...
One could detect all the allocation in one source file and group them
together. In a one-source-file-per-object model this will work pretty
well.
> > Even without specific functions for all types this is quite useful, as
> > you can see the object counts. I've already detected some strange things
> > in nautilus with this. The top of the memory profile there looks like:
> >
> > GtkImage: 231 allocated at 104 base size bytes, 23 kb total size
> > GstPadTemplate: 334 allocated at 76 base size bytes, 24 kb total size
> > GtkSeparatorMenuItem: 284 allocated at 96 base size bytes, 26 kb total size
> > NautilusIconCanvasItem: 502 allocated at 64 base size bytes, 31 kb total size
> > GtkAccelLabel: 306 allocated at 168 base size bytes, 50 kb total size
> > NautilusVFSFile: 1005 allocated at 128 base size bytes, 296 kb total size
> > GdkPixbuf: 340 allocated at 52 base size bytes, 6409 kb total size
>
> What's the strange thing you detected? Just curious.
We're allocating about 140 GtkSeparatorMenuItem per window. Apparently
GtkUIManager allocates two per placeholder in the xml files.
> It may be nice to enable this patch if you compile glib with
> --enable-debug.
Or at least something like it. I think the way you register the memuse
handler is a bit ugly.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Alexander Larsson Red Hat, Inc
alexl redhat com alla lysator liu se
He's a maverick day-dreaming waffle chef who dotes on his loving old ma. She's
a strong-willed green-skinned barmaid who inherited a spooky stately manor
from her late maiden aunt. They fight crime!
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]