From: Jeff E. <JEm...@lg...> - 2004-01-08 17:44:48
|
By registering your instances with the DisplayManager, you will have a live reference to them and they won't be unreachable and garbage collected unless your registration uses java.lang.ref.WeakReference. I suggest looking into the classes in java.lang.ref. -----Original Message----- From: Xavier Noria [mailto:fx...@is...] Sent: Thursday, January 08, 2004 10:36 AM To: jyt...@li... Subject: [Jython-users] doubt about __del__ Just to be sure: Is it true that __del__ is not called when a variable is no longer reachable but is related to when it's garbage collected, which may be later? I wanted to monitor live instances of certain classes modifying their __init__ with this wrapper: from __future__ import nested_scopes def wrap_init(klass): aux = klass.__init__ def __wrapped(self, *arg, **kv): DisplayManager.register(self) aux(self, *arg, **kv) klass.__init__ = __wrapped Now I would need to detect when they are no longer alive from the point of view of the execution. Any trick? -- fxn ------------------------------------------------------- This SF.net email is sponsored by: Perforce Software. Perforce is the Fast Software Configuration Management System offering advanced branching capabilities and atomic changes on 50+ platforms. Free Eval! http://www.perforce.com/perforce/loadprog.html _______________________________________________ Jython-users mailing list Jyt...@li... https://lists.sourceforge.net/lists/listinfo/jython-users |
From: Updike, C. <Cla...@jh...> - 2004-01-08 19:37:56
|
Take a look here for a brief explanation of the reference types: <http://java.sun.com/developer/TechTips/1999/tt0511.html#tip2> -Clark -----Original Message----- From: Xavier Noria [mailto:fx...@is...] Sent: Thursday, January 08, 2004 2:32 PM To: Jeff Emanuel Cc: 'jyt...@li...' Subject: Re: [Jython-users] doubt about __del__ On Jan 8, 2004, at 6:44 PM, Jeff Emanuel wrote: > By registering your instances with the DisplayManager, > you will have a live reference to them and they won't > be unreachable and garbage collected unless your > registration uses java.lang.ref.WeakReference. > I suggest looking into the classes in java.lang.ref. Excellent. So the idea is to change DisplayManager.register(self) to DisplayManager.register(WeakReference(self)) Do SoftReferences serve for my purposes as well? I don't quite get how they differ. The application runs in a main loop, alive references are supposed to be checked once at the bottom of the block, and instances we are interested in are created/destroyed above in the body. Weak references' get() whose referent is weak-reachable are guaranteed to return null? Or that null depends on when the garbage collector runs and is undefined? -- fxn ------------------------------------------------------- This SF.net email is sponsored by: Perforce Software. Perforce is the Fast Software Configuration Management System offering advanced branching capabilities and atomic changes on 50+ platforms. Free Eval! http://www.perforce.com/perforce/loadprog.html _______________________________________________ Jython-users mailing list Jyt...@li... https://lists.sourceforge.net/lists/listinfo/jython-users |
From: Jeff E. <JEm...@lg...> - 2004-01-08 20:56:32
|
Here are a couple more links. http://java.sun.com/developer/technicalArticles/ALT/RefObj/ http://www.docs.cs.huji.ac.il/java/tutorialaug98/refobjs/about/index.html -----Original Message----- From: Updike, Clark [mailto:Cla...@jh...] Sent: Thursday, January 08, 2004 12:38 PM To: 'Xavier Noria' Cc: 'jyt...@li...' Subject: RE: [Jython-users] doubt about __del__ Take a look here for a brief explanation of the reference types: <http://java.sun.com/developer/TechTips/1999/tt0511.html#tip2> -Clark -----Original Message----- From: Xavier Noria [mailto:fx...@is...] Sent: Thursday, January 08, 2004 2:32 PM To: Jeff Emanuel Cc: 'jyt...@li...' Subject: Re: [Jython-users] doubt about __del__ On Jan 8, 2004, at 6:44 PM, Jeff Emanuel wrote: > By registering your instances with the DisplayManager, > you will have a live reference to them and they won't > be unreachable and garbage collected unless your > registration uses java.lang.ref.WeakReference. > I suggest looking into the classes in java.lang.ref. Excellent. So the idea is to change DisplayManager.register(self) to DisplayManager.register(WeakReference(self)) Do SoftReferences serve for my purposes as well? I don't quite get how they differ. The application runs in a main loop, alive references are supposed to be checked once at the bottom of the block, and instances we are interested in are created/destroyed above in the body. Weak references' get() whose referent is weak-reachable are guaranteed to return null? Or that null depends on when the garbage collector runs and is undefined? -- fxn ------------------------------------------------------- This SF.net email is sponsored by: Perforce Software. Perforce is the Fast Software Configuration Management System offering advanced branching capabilities and atomic changes on 50+ platforms. Free Eval! http://www.perforce.com/perforce/loadprog.html _______________________________________________ Jython-users mailing list Jyt...@li... https://lists.sourceforge.net/lists/listinfo/jython-users ------------------------------------------------------- This SF.net email is sponsored by: Perforce Software. Perforce is the Fast Software Configuration Management System offering advanced branching capabilities and atomic changes on 50+ platforms. Free Eval! http://www.perforce.com/perforce/loadprog.html _______________________________________________ Jython-users mailing list Jyt...@li... https://lists.sourceforge.net/lists/listinfo/jython-users |
From: Xavier N. <fx...@is...> - 2004-01-08 19:31:57
|
On Jan 8, 2004, at 6:44 PM, Jeff Emanuel wrote: > By registering your instances with the DisplayManager, > you will have a live reference to them and they won't > be unreachable and garbage collected unless your > registration uses java.lang.ref.WeakReference. > I suggest looking into the classes in java.lang.ref. Excellent. So the idea is to change DisplayManager.register(self) to DisplayManager.register(WeakReference(self)) Do SoftReferences serve for my purposes as well? I don't quite get how they differ. The application runs in a main loop, alive references are supposed to be checked once at the bottom of the block, and instances we are interested in are created/destroyed above in the body. Weak references' get() whose referent is weak-reachable are guaranteed to return null? Or that null depends on when the garbage collector runs and is undefined? -- fxn |