[ZODB-Dev] Re: memory exhaustion problem

Gary Poster gary at zope.com
Thu Jan 17 13:04:46 EST 2008


On Jan 17, 2008, at 11:57 AM, Flavio Coelho wrote:

> Some progress!
>
> Apparently the combination of:
>             u._p_deactivate()
>             transaction.savepoint(True)
>             transaction.commit()
>
> helped. Memory  consumption keeps growing but much more slowly  
> (about 1/5 of the original speed). Please correct me if I am wrong,  
> but I believe that ideally memory usage should stay constant  
> throughout the loop, shouldn't it?

Are you still using the example code you gave in a previous message?   
If so, you are generating and storing user objects in a list, which  
grows.  If not, maybe give a snippet of your current example code.

> Moreover, I shouldn't need to commit either, since I am not  
> modifying the objects...

You need to tell the ZODB about the transaction boundary so it knows  
when to "let go".  transaction.abort() would work too.  You could also  
manually much with the persistent object cache I suppose, though  
_p_deactivate should be doing most of what would help...   
"ghosts" (deactivated objects) still take up some memory.

Gary




More information about the ZODB-Dev mailing list