Thread (3 messages) 3 messages, 3 authors, 2003-07-20

Re: Linux free issue

From: Eugene Teo <hidden>
Date: 2003-07-20 02:27:43

<quote sender="Rik van Riel">
On Sat, 19 Jul 2003, Vinay I K wrote:
quoted
http://mail.nl.linux.org/linux-mm/1998-08/msg00028.html

I am a bit confused. When we call free in Linux, is the memory not given
back to the system(just cached)? What is the state of the issue in the
latest Linux Kernel?
The issue is not in the Linux kernel at all, but in glibc.
It is the C library that has (after careful measuring and
optimising) made the decision to not call the system call
to free memory but instead keep it for later use.
I agree with Riel. It has nothing to do with the kernel,
but the implementation of the dynamic memory allocator
in the userspace C library.

The actual implementation might differ a little but the
general idea is that whenever you do a free, it deallocates
the region of memory by storing this "freed" space to a free
list. You will notice that the heap offset is not decreased
by using the sbrk syscall. The next time you call malloc,
it will search through the free list, and if a space matches,
that spaces will be used to your program. Otherwise, it will
increase the heap, allocate a region of memory you specified 
for your program instead.

Eugene

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help