<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Hi Lukas,</div><div><br></div><div>How are you defining 'memory not released'?  Is this a measure of the Lisp heap or the OS footprint?</div><div><br></div><div>As I recall, when allocating space in the heap for new objects, SBCL will periodically ask the OS for more heap memory.  Even if the objects are garbage collected later, the allocated memory will remain (SBCL never releases heap memory back to the OS even if it isn't using most of it).  It also asks for new heap space in increasingly large chunks much like a hash table.</div><div><br></div><div>The objects loaded into memory are stored in a weak hash table, and unless there's a bug in a recent SBCL, if you don't reference them elsewhere they should be garbage collected.  You can use (gc) to make sure the GC has run and cleaned everything out and (room) to see how much memory is allocated for what kinds of objects.</div><div><br></div><div>It's possible that some of this memory is the shared memory allocated by BDB - but that can is upper-bounded in the my-config.sexp file and should be static.</div><div><br></div><div>Ian</div><br><div><div>On Mar 5, 2010, at 5:12 AM, Lukas Gießmann wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
<div style="PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 15px" id="MailContainerBody" leftmargin="0" topmargin="0" canvastabstop="true" name="Compose message area">
<div><font face="Calibri">Hi list,</font></div>
<div><font face="Calibri"></font> </div>
<div><font face="Calibri">in our application which uses elephant 1.0 with sbcl 
1.0.29.11.debian on ubuntu we have a memory leak.</font></div>
<div><font face="Calibri">After a lot of debugging I am sure to have found the 
responsible function. It seems that elephant:get-instances-by-value does not 
release the needed memory after the operation is done.</font></div>
<div><font face="Calibri">I also have some debug-examples with this and other 
elephant functions and the needed memory:</font></div>
<div><font face="Calibri"></font> </div>
<div><font face="Calibri">---------------------</font></div>
<div><font face="Calibri">(dotimes (i 1000000)<br>    
(elephant:get-instances-by-value 'd::TopicIdentificationC 'd::uri 
"goethe"))<br>;--> memory that is not released after operation 29.0 
MB</font></div>
<div><font face="Calibri"></font> </div><font face="Calibri">
<div><br>(dotimes (i 1000000)<br>    
(elephant:get-instance-by-value 'd::TopicIdentificationC 'd::uri 
"goethe"))<br>;--> memory that is not released after operation 0.1 MB</div>
<div> </div>
<div><br>(dotimes (i 1000000)<br>    
(elephant:get-instances-by-class 'd::TopicIdentificationC))<br>;--> memory 
that is not released after operation 58.9 MB</div>
<div>---------------------</div>
<div> </div>
<div>Is there any function or any method to relaese the memory after a call of 
elephant:get-instances-by-value or elephant:get-instances-by-class. Maybe 
there is any other work-around?</div>
<div> </div>
<div> </div>
<div>Thanks in advance</div>
<div> </div>
</font><div><font face="Calibri">Lukas</font></div></div>
_______________________________________________<br>elephant-devel site list<br><a href="mailto:elephant-devel@common-lisp.net">elephant-devel@common-lisp.net</a><br>http://common-lisp.net/mailman/listinfo/elephant-devel</blockquote></div><br></body></html>