[Numpy-discussion] GC support
Eric Firing
efiring at hawaii.edu
Thu Mar 29 18:37:36 EDT 2007
Travis and others,
In the course of trying to understand memory leaks in matplotlib I have
been trying to understand a bit about the garbage collector. If I
understand correctly, any container that can can hold references to
other containers could lead to a reference cycle; if the container
supports the gc mechanism, then the gc can at least find the cycles. If
the containers do not have __del__ methods, then the gc can also break
the cycles and reclaim the memory. (This also seems to imply that
__del__ methods should be avoided if at all possible, and I don't
understand the implications and applications of this.)
I notice that numpy.ndarray does not support the gc, correct? And since
an ndarray can hold other containers, it could lead to uncollectable
cycles, correct?
Did you decide not to include gc support because it is not actually
needed or useful? If so, what am I missing?
I don't think the lack of gc support in numpy has anything to do with
the present leak problem in mpl, so I am asking about numpy partly out
of curiosity, and partly in the hope that your answer will help me
understand exactly when one really needs to worry about gc support in
extension code--mpl has quite a bit of extension code, and relies on
much outside extension code as well. The one little bit of extension
code I wrote for numpy, the wrapper part of the contour routine, does
not support the gc--and if this is a mistake, I want to know about it.
(I am beginning to suspect that it should support the gc, although it is
not part of our most basic problem at the moment.)
Googling has not turned up much information beyond the standard python
docs about the gc, extension code, and memory leaks in python.
Thanks for whatever insight and advice you can provide.
Eric
More information about the NumPy-Discussion
mailing list