In a reply to question 36225 at
https://ask.sagemath.org/question/36225/memory-leak-with-modular-symbols/
(my reply was deleted by the system so you cannot read it) I offered
to try to help by asking here how to do somthign I don't know how to
do.

When you do

sage: E = EllipticCurve('11a1')
sage: M = E.modular_symbol()

an instance of class ModularSymbolECLIB is created (as defined in
sage.schemes.elliptic_curves.ell_modular_symbols) which in turn
creates an instance of ECModularSymbol (as defined in sage/libs/eclib)
which in turn creates an ainstance of a C++ class in eclib which is a
C++ library.  Currently there is no way the memory that uses up can be
released.  I know that C++ classes have destructors which get called
when the objects go out of scope; presumably there is something
similar in python / cython?  What would we need to do to get the
destructor called?

Currently a loop such as

DB = CremonaDatabase()
for N in range(1,10000):
        Cs = DB.isogeny_classes(N)
        for C in Cs:
                E=EllipticCurve(C[0][0])
                phi=E.modular_symbol()

uses up more and more memory even though after each run through the
innermost loop there is no data left in scope.

John

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to