#715: Parents probably not reclaimed due to too much caching
-------------------------------------------------------------------+--------
       Reporter:  robertwb                                         |         
Owner:  somebody                     
           Type:  defect                                           |        
Status:  needs_review                 
       Priority:  major                                            |     
Milestone:  sage-pending                 
      Component:  coercion                                         |    
Resolution:                               
       Keywords:  weak cache coercion Cernay2012                   |   Work 
issues:                               
Report Upstream:  N/A                                              |     
Reviewers:  Jean-Pierre Flori, Simon King
        Authors:  Simon King, Jean-Pierre Flori                    |     Merged 
in:                               
   Dependencies:  #9138, #11900, #11599, to be merged with #11521  |      
Stopgaps:                               
-------------------------------------------------------------------+--------

Old description:

> Here is a small example illustrating the issue.
>
> The memory footprint of the following piece of code grows indefinitely.
>
> {{{
> sage: K = GF(1<<55,'t')
> sage: a = K.random_element()
> sage: while 1:
> ....:     E = EllipticCurve(j=a); P = E.random_point(); 2*P; del E, P;
>
> }}}
> E and P get deleted, but when 2*P is computed, the action of integers on
> A, the abelian group of rational points of the ellitpic curve, gets
> cached in the corecion model.
>
> A key-value pair is left in coercion_model._action_maps dict:
>
> (ZZ,A,*) : IntegerMulAction
>
> Moreover there is at least also references to A in the IntegerMulAction
> and one in ZZ._action_hash.
>
> So weak refs should be used in all these places if it does not slow
> things too much.
>
> '''To be merged with #11521'''. Apply:
>
>  * [attachment:trac_715_combined.patch]
>  * [attachment:trac_715_local_refcache.patch]
>
> and '''then''' the tickets from #11521.

New description:

 Here is a small example illustrating the issue.

 The memory footprint of the following piece of code grows indefinitely.

 {{{
 sage: K = GF(1<<55,'t')
 sage: a = K.random_element()
 sage: while 1:
 ....:     E = EllipticCurve(j=a); P = E.random_point(); 2*P; del E, P;

 }}}
 E and P get deleted, but when 2*P is computed, the action of integers on
 A, the abelian group of rational points of the ellitpic curve, gets cached
 in the corecion model.

 A key-value pair is left in coercion_model._action_maps dict:

 (ZZ,A,*) : IntegerMulAction

 Moreover there is at least also references to A in the IntegerMulAction
 and one in ZZ._action_hash.

 So weak refs should be used in all these places if it does not slow things
 too much.

 '''To be merged with #11521'''. Apply:

  * [attachment:trac_715_combined.patch]
  * [attachment:trac_715_local_refcache.patch]
  * [attachment:trac_715_specification.patch]

 and '''then''' the tickets from #11521.

--

Comment (by SimonKing):

 I added sage.structure.coerce_dict to the reference manual. I took a
 slight modification of the text you suggested to document the purpose of
 that module. Note that the text also refers to #11521, but this should be
 fine, as #715 and #11521 are mutually dependent, hence, will be merged
 together.

 Apply trac_715_combined.patch trac_715_local_refcache.patch
 trac_715_specification.patch #11521

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/715#comment:207>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to