Re: [protobuf] Memory leak (fragmentation?)

2009-11-24 Thread Neil T. Dantam

Jason Hsueh wrote:
> Are you sure the leak is due to persistCacheToFile()? 

>> Does it due to memory fragmentation ? It's very strange because this
>> method 'FileManager::persistCacheToFile()'[3] should delete all its
>> memory when it returns. Should I use a other memory allocater like
>> tcmalloc ?

I find valgrind to be an invaluable tool for tracking down these
kind of problems (and many others).

http://valgrind.org/

--
Neil

--

You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to proto...@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.




Re: [protobuf] Memory leak (fragmentation?)

2009-11-24 Thread Jason Hsueh
Are you sure the leak is due to persistCacheToFile()? It looks like your
FileManager::loadCacheFromFile() method is leaking the protocol buffer when
you are reading the cache back in.

If that's not the case, can you send a small reproduction of the problem?

On Tue, Nov 24, 2009 at 2:03 AM, Greg Burri  wrote:

> Hi,
>
> I'm using Protocol Buffers in an open source project[1]. I have a tree
> structure in memory which represents some directories and files.
> This structure must be persisted, so I've defined some protocol
> messages[2] to do that.
>
> The persist routine[3] will run through the tree structure to build a
> 'Protos.FileCache.Hashes' message and serialize it to the hard drive,
> then this message will be deleted.
>
> Each time I persist, the memory will increase by ~200ko (very
> approximatively) for a tree which contains ~30'000 files and ~4'000
> directories.
> I Tried to remove all 'set' like 'dirToFill.set_name(this->getName
> ().toStdString());'[4] to avoid memory leak from my code and kept only
> the Protocol Buffer methods. I also removed the serialize call
> 'Common::PersistantData::setValue(FILE_CACHE, hashes);'[3].
> Nonetheless I always observe some memory leak.
>
> Does it due to memory fragmentation ? It's very strange because this
> method 'FileManager::persistCacheToFile()'[3] should delete all its
> memory when it returns. Should I use a other memory allocater like
> tcmalloc ?
>
> [1] : http://dev.euphorik.ch/projects/show/pmp
>
> [2] :
>
> http://git.euphorik.ch/index.cgi?p=aybabtu.git;a=blob;f=application/Protos/files_cache.proto;h=b6dca154ae46b57c29cf3a4b66c9bece52dd3953;hb=b60e04e926bff06ec1707cc13aa70b6a4b8aaa1c
>
> [3] :  FileManager::persistCacheToFile() :
>
> http://git.euphorik.ch/index.cgi?p=aybabtu.git;a=blob;f=application/Core/FileManager/priv/FileManager.cpp;h=c33f94986bef3edcb6ca2ce539fdc11df0bb2b1e;hb=b60e04e926bff06ec1707cc13aa70b6a4b8aaa1c#l289
>
> [4] :
>
> http://git.euphorik.ch/index.cgi?p=aybabtu.git;a=blob;f=application/Core/FileManager/priv/Cache/Directory.cpp;h=0818fefdf7ba2b63918c0157f295afc72c492f03;hb=b60e04e926bff06ec1707cc13aa70b6a4b8aaa1c#l76
>
>
> Thanks in advance !
>
> /Greg
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To post to this group, send email to proto...@googlegroups.com.
> To unsubscribe from this group, send email to
> protobuf+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/protobuf?hl=en.
>
>
>

--

You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to proto...@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.