The following Python script leaks about 8MB on my system (Debian Woody, Perl 5.6.1, Python 2.1.3, pyperl-1.0.1). Python's cyclic garbage collection is enabled. Perl is compiled w/o threads. pyperl is compiled w/o MULTI_PERL. #!/usr/bin/env python import perl # create 100000 empty perl arrays and immediately discard them. for x in range(100000): perl.array(()) The MULTI_PERL code (that does not get used because of the singly-threaded Perl) appears to have a reference counting scheme. For those of you with multi-threaded Perl, does the previous program leak/consume substantial memory? Is there some way to force garbage collection or manually decrement the reference count? Is there an extra reference stored because of the shared Python/Perl object that prevents either the Perl or Python GC routines from garbage collecting the unused objects? I've gotten around the problem by running the leaky code in a fork, but that's sloppy and shouldn't be necessary. pyperl can be found at: http://downloads.activestate.com/Zope-Perl/pyperl-1.0.1.tar.gz if you're interested. Thank you.
participants (1)
-
Solomon Bessire