Issue1851
Created on 2012-03-15.15:18:59 by danilo2, last changed 2012-03-15.16:04:36 by fwierzbicki.
msg6797 (view) |
Author: danilo2 (danilo2) |
Date: 2012-03-15.15:18:59 |
|
Hi!
weakrefs in juthon 2.5.2 does not work as they should. concider this code from jython manual:
import weakref
class Object:
pass
o = Object()
r = weakref.ref(o)
o2 = r()
o is o2
del o, o2
print '!'
print r()
as a reusult we can see "<_main_.Object instance at 0x15434>" not None
|
msg6798 (view) |
Author: Frank Wierzbicki (fwierzbicki) |
Date: 2012-03-15.16:04:36 |
|
Hi danilo2,
Looking at weakref at http://docs.python.org/library/weakref.html you'll note the paragraph:
A weak reference to an object is not enough to keep the object alive: when the only remaining references to a referent are weak references, garbage collection is free to destroy the referent and reuse its memory for something else.
Of particular note is "garbage collection is free to destroy..."
So even though the current implementation of CPython appears to destroy the weakref in a deterministic fashion, that will be due to it's reference counted gc implementation. Jython does not have deterministic garbage collection and so will not immediately destroy the weakref. In fact the time of destruction is in no way guaranteed.
|
|
Date |
User |
Action |
Args |
2012-03-15 16:04:36 | fwierzbicki | set | status: open -> closed assignee: fwierzbicki resolution: invalid messages:
+ msg6798 nosy:
+ fwierzbicki |
2012-03-15 15:18:59 | danilo2 | create | |
|