[Mono-list] Checking memory leak
Andreas Ericsson
ae at op5.se
Thu Apr 23 04:11:09 EDT 2009
Ishwor Gurung wrote:
> Hi list,
>
> Whats an appropriate way to check for memory leak of a mono application?
>
> I googled around with some example using valgrind for mono app but
> couldn't find any concrete examples. What I've essentially done so far
> using valgrind is:
> $ valgrind --tool=memcheck --leak-check=full --show-reachable=yes mono
> ./ConnectUTest.exe
>
> This however, always produces memory leak (~14k/test on five runs so far):
>
> ==15141== LEAK SUMMARY:
> ==15141== definitely lost: 14,408 bytes in 760 blocks.
> ==15141== indirectly lost: 2,496 bytes in 126 blocks.
> ==15141== possibly lost: 12,460 bytes in 419 blocks.
> ==15141== still reachable: 2,569,056 bytes in 16,726 blocks.
> ==15141== suppressed: 0 bytes in 0 blocks.
>
>
> Is this something I should worry about in itself or let the Mono's GC
> do its job with the memory and not worry about memory leaks? Can
> someone confirm if these are even a real memory leak (the one above
> with 14,408 bytes gone!)?
>
If valgrind reports it as a leak, then it is a leak, but only in the
sense that no reference points *exactly* to the leaked area.
For example, consider this code (in C, sorry. I don't know how to
produce a leak in C#):
--%<--%<--
static unsigned long offset;
static char *buf;
void some_func(void)
{
buf = malloc(5000);
offset = 4500;
buf += offset;
}
--%<--%<--
but that's not entirely true, because the exact reference to *buf
can be determined by
exact_ref = buf - offset;
Granted, this is a pretty weird way of using offsets, but it's a
valid one that can be done without leaking memory. I've sometimes
used it myself to microoptimize tight loops, but only on static
sized data where the offset is always
exact_ref = buf - STATIC_SIZE;
In short; Valgrind sometimes gives false positives. So long as
the leaked memory is small-ish (14K is nothing) and doesn't
grow over time, I wouldn't worry about it.
--
Andreas Ericsson andreas.ericsson at op5.se
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.
More information about the Mono-list
mailing list