Heap memory is not re-claiming.

rohan puri rohan.puri15 at gmail.com
Tue Oct 18 04:50:34 EDT 2011


On Tue, Oct 18, 2011 at 10:04 AM, V.Ravikumar
<ravikumar.vallabhu at gmail.com>wrote:

> On Sat, Oct 15, 2011 at 9:31 AM, Mulyadi Santosa <
> mulyadi.santosa at gmail.com> wrote:
>
>> Hi.... :)
>>
>> On Fri, Oct 14, 2011 at 16:15, pankaj singh <psingh.ait at gmail.com> wrote:
>> > Nice doc ...:)
>> >
>> > On Fri, Oct 14, 2011 at 10:28 AM, rohan puri <rohan.puri15 at gmail.com>
>> wrote:
>> >> Reference to an article by Mulayadi Santosa :-
>> >>
>> >>
>> http://linuxdevcenter.com/pub/a/linux/2006/11/30/linux-out-of-memory.html
>> >>
>> >> AWESOME ARTICLE SIR :)
>>
>>
>> Thank you, thank you very much for your appreciation :) I just hope,
>> besides getting adequate money, you all got something meaningful from
>> that article. And I believe, as long as there are people who have same
>> concerned, that article will be refined over and over and overall will
>> be better through the time :)
>>
>> --
>> regards,
>>
>> Mulyadi Santosa
>> Freelance Linux trainer and consultant
>>
>> blog: the-hydra.blogspot.com
>> training: mulyaditraining.blogspot.com
>>
>> _______________________________________________
>> Kernelnewbies mailing list
>> Kernelnewbies at kernelnewbies.org
>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>>
>
>  Hi,
>
> It's really a fabulous article.
> Many many thanks to  Mulyadi for such a great article and thank for Rohan
> for sharing the link.
>
> I read the article and correlate contents  with my current issue.
> Here are my observations. Do please correct me if I'm wrong at any point.
>
> The leak  which I was observed in my program is due to big memory buffers
> of size 5MB allocation from heap.I've 6 such character buffers.
>
> So as per below lines from the article memory should be allocated with mmap
> and it immediately releases memory to kernel  upon free/delete call from
> user land process.
>
> The allocator uses two functions to get a chunk of memory from the kernel:
>
>    - brk() sets the end of the process's data segment.
>    - mmap() creates a new VMA and passes it to the allocator.
>
> The decision on whether to use brk() or mmap() requires one simple check.
> If the request is equal or larger than M_MMAP_THRESHOLD, the allocator
> uses mmap(). If it is smaller, the allocator calls brk(). By default,
> M_MMAP_THRESHOLD is 128KB
>
> But It seems I'm landed with a case which uses brk() for allocation and so
> it just marks as free when I my program frees the memory and hence 30 MB
> memory (I've 6 , 5MB buffers from heap)was kept on allocator's control
> leading to a 30MB leak of user land process.
> Please note that I'm freeing memory for 6 buffers (I'm sure about that).
>
> Regards,
> Ravi
>
>
> Yes I think thats the case.

Regards,
Rohan Puri
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20111018/10d8b195/attachment-0001.html 


More information about the Kernelnewbies mailing list