Oh my this is going to be fun Raymond Smith wrote: > Sounds like we need a "null cycle killer". Damn sure circular references a > playing a big roll in our leak... > > > > > This problem with cycles is the price that must be paid for a simple, > lightweight, portable garbage collection scheme. The only way to prevent > this problem is by manual intervention. If you create code in which A refers > to B, B refers to C, and C refers to A, then you must be able to recognize > that you've created a cycle, and take steps to force the cycle to be garbage > collected when it is no longer needed. > > When you know that the objects in your cycle are no longer in use, you can > force them to be garbage collected by breaking the cycle. You can do this by > picking one of the objects in the cycle and setting the property of it that > refers to the next object to null. For example, suppose that A, B, and C are > objects that each have a next property, and the value of this property is > set so that these objects refer to each other and form a cycle. When these > objects are no longer in use, you can break the cycle by setting A.next to > null. This means that object B no longer has a reference from A, so its > reference count can drop to zero and it can be garbage collected. Once it > has been garbage collected, then it will no longer refer to C, so its > reference count can drop to zero and it can be garbage collected. Once C is > garbage collected, A can be garbage collected. > > Note, of course, that none of this can happen if A, B, and C are stored in > global variables in a window that is still open, because those variables A, > B, and C still refer to the objects. If these were local variables in a > function, and you broke their cycle before the function returned, then they > could be garbage collected. But if they are stored in global variables, they > will remain referenced until the window that contains them closes. In this > case, if you want to force them to be garbage collected you must break the > cycle and set the variables to null: > > A.next = null; // break the cycle > A = B = C = null; // remove the last remaining external references > > _______________________________________________ > Dynapi-Dev mailing list > [EMAIL PROTECTED] > http://lists.sourceforge.net/lists/listinfo/dynapi-dev _______________________________________________ Dynapi-Dev mailing list [EMAIL PROTECTED] http://lists.sourceforge.net/lists/listinfo/dynapi-dev
Re: [Dynapi-Dev] Continuing Freeing memory
Jordi - IlMaestro - Ministral Wed, 21 Feb 2001 17:05:11 -0800
- Re: [Dynapi-Dev] Continuing Freeing memory Richard Emberson
- Re: [Dynapi-Dev] Continuing Freeing memory Raymond Smith
- RE: [Dynapi-Dev] Continuing Freeing memory Eytan Heidingsfeld
- RE: [Dynapi-Dev] Continuing Freeing memory Pascal
- Re: [Dynapi-Dev] Continuing Freeing mem... Doug Melvin
- RE: [Dynapi-Dev] Continuing Freeing memory Pascal
- Re: [Dynapi-Dev] Continuing Freeing mem... Mark Pratt
- Re: [Dynapi-Dev] Continuing Freeing memory Jared Nuzzolillo
- Re: [Dynapi-Dev] Continuing Freeing mem... Jared Nuzzolillo
- Re: [Dynapi-Dev] Continuing Freeing memory Raymond Smith
- RE: [Dynapi-Dev] Continuing Freeing mem... Jordi - IlMaestro - Ministral
- RE: [Dynapi-Dev] Continuing Freeing memory Pascal
- Re: [Dynapi-Dev] Continuing Freeing mem... Doug Melvin
- Re: [Dynapi-Dev] Continuing Freeing memory Raymond Smith
- Re: Re: [Dynapi-Dev] Continuing Freeing memo... Barre Bizon
- Re: [Dynapi-Dev] Continuing Freeing memory Raymond Smith
- Re: [Dynapi-Dev] Continuing Freeing mem... Joachim Lundgren
- Re: [Dynapi-Dev] Continuing Freeing memory Raymond Smith
- Re: [Dynapi-Dev] Continuing Freeing memory Raymond Smith
- Re: [Dynapi-Dev] Continuing Freeing mem... Doug Melvin
- Re: [Dynapi-Dev] Continuing Freeing memory Richard Emberson
