Re: g_blow_chunks() doesn't.
- From: Owen Taylor <otaylor redhat com>
- To: bviren ale physics sunysb edu (Brett Viren)
- Cc: gtk-list redhat com
- Subject: Re: g_blow_chunks() doesn't.
- Date: 30 Aug 1998 17:27:03 -0400
bviren@ale.physics.sunysb.edu (Brett Viren) writes:
> Hi.
>
> I am using GLib's g_slist_*() functions. After each cycle of my
> program I am freeing all lists which I have used with either
> g_slist_free() or many g_slist_remove()'s and then calling
> g_blow_chunks() (great name!).
>
> However, I don't think it is actually freeing any of the slist's
> chunks (as it should according to comments in glib.h), because when I
> call g_mem_chunk_info() I get, among others, a line like:
>
> slist mem chunk: 79704 bytes using 80 mem areas
>
> If I run my code so that each program cycle needs more links per list
> than the previous, then this count increases. If I run it so that
> each program cycle needs less links per list, then this count stays
> the same, so I am pretty sure I'm not forgetting to g_slist_free() all
> my lists.
>
> Since some times I will need to use much longer lists than others I
> would like to free up this list memory whenever possible.
>
> Can someone tell me what I am missing?
For the maximum in speed, GSLists allocate their nodes from
a ALLOC_ONLY mem chunk; when nodes are freed, they aren't
freed in the memchunk, they are just added to a slists free
lists.
The assumption is that if your program is using a lot of
list nodes now, then it will be again shortly, so trying
to actually free the memory isn't that important.
(g_mem_chunk_free() is actually sort of expensive; since
[S]Lists are used so much this is an important speedup.)
Regards,
Owen
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]