Christian Heimes wrote: > Martin v. Löwis wrote: >> I wonder whether such a thing should run as a side effect of a full >> garbage collection, also. GC has a chance to free up arenas for good, >> and allocated-but-unused blocks on arenas prevent Python from returning >> them to the OS. > > Under which condition does a full garbage collection take place? Does > the interpreter run a full gc once in a while or is it started by > gc.collect()?
Both. Let (a,b,c) equal gc.get_threshold(), then a full gc happens after a*b*c object allocations (roughly; early object deallocations are deducted from that number). Currently, this product is 70000. > I'm more concerned about the int and float memory blocks. They should > get freed when more than a couple of hundred blocks are allocated. The > other free lists are much smaller. But memory fragmentation is an issue > for them, too. Ain't we talking about Python 3? There aren't any int memory blocks around. As for float objects - sure, we should do something about them. I propose to change them into a freelist as well, and allocate float objects through pymalloc. I'd be curious whether any real-world application allocates tons of float objects temporarily, and whether such an application would improve by using the Numeric extensions. Regards, Martin _______________________________________________ Python-3000 mailing list [email protected] http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com
