On Tue, Oct 18, 2011 at 10:04 AM, V.Ravikumar <[email protected]>wrote:
> On Sat, Oct 15, 2011 at 9:31 AM, Mulyadi Santosa < > [email protected]> wrote: > >> Hi.... :) >> >> On Fri, Oct 14, 2011 at 16:15, pankaj singh <[email protected]> wrote: >> > Nice doc ...:) >> > >> > On Fri, Oct 14, 2011 at 10:28 AM, rohan puri <[email protected]> >> 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 >> [email protected] >> 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
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
