flex-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Harui <aha...@adobe.com>
Subject Re: when to dispose of objects for garbage collection?
Date Thu, 06 Jun 2013 18:50:36 GMT
It if it doesn't returned, then it is the browser's fault, not yours.

On 6/6/13 11:19 AM, "modjklist@comcast.net" <modjklist@comcast.net> wrote:

>When the user eventually closes the browser, if there's any leaked
>memory, does it get returned to the system, or does it remain leaked
>thereafter?
>
>----- Original Message -----
>From: "Alex Harui" <aharui@adobe.com>
>To: users@flex.apache.org
>Sent: Thursday, June 6, 2013 10:12:20 AM
>Subject: Re: when to dispose of objects for garbage collection?
>
>Answers in-line, but I'm not sure what "CREATED in" really means.  Does it
>mean defined in a single MXML file?
>
>On 6/6/13 9:03 AM, "modjklist@comcast.net" <modjklist@comcast.net> wrote:
>
>>I should have mentioned regarding question 2 and 3, that the DataGrid,
>>ComboBox, etc., used by the TitleWindow was CREATED in the TitleWindow,
>>and is not used external to the TitleWindow. The questions being whether
>>the TitleWindow automatically cleans up these variables for GC, or
>>requires me to null them first...
>>
>>----- Original Message -----
>>From: modjklist@comcast.net
>>To: users@flex.apache.org
>>Sent: Thursday, June 6, 2013 8:52:05 AM
>>Subject: when to dispose of objects for garbage collection?
>>
>>
>>Can someone help me identify when I need to dispose of an object, array,
>>etc. in a typical Flex app?
>>
>>For example, suppose I have an app with several states and a TitleWindow.
>>
>>I know that if I declare a variable for a state, such as:
>>
>><fx:Script> 
>><![CDATA[ 
>>  ...
>>  private var myArr:Array;
>>  ...	
>>]]>
>></fx:Script>
>>
>>that when I no longer need this array (or object, etc.), I should set it
>>to null to inform the garbage collector (GC) it's ready to be picked up.
>>That's because, otherwise, this variable remains in memory, since the
>>state persists throughout the life of the app.
>>
>>But what if this state uses the following function:
>>
>><fx:Script> 
>><![CDATA[ 
>>  private var summation:Number;
>>  ...	
>>  private function myFunc():void {
>>      var anotherArr:Array=[1,2,3,4,5]
>>      for (var i:int=0; i<anotherArr.length; i++)
>>        summation+=anotherArr[i];
>>  }
>>  ...
>>]]>
>></fx:Script>
>>
>>QUESTION 1: Do I need to manually null variable myArr2 at the end of
>>function myFunc()? Or, will it be picked up automatically by the GC?
>This particular function will not leak the array (note that it re-creates
>the array every time it gets called which is inefficient).  But if you
>did:
>
>	private function myFunc():void {
>	    var anotherArr:Array=[1,2,3,4,5];
>            var someFunction:Function = function() {
>            }
>
>and someFunction is assigned as an event listener or other callback, then
>anotherArr is on the scope chain and will be held onto until someFunction
>is no longer referenced, which could be long after myFunc() ended.
>
>>
>>How about TitleWindows?
>>
>>QUESTION 2: If I open a TitleWindow (e.g. popup) that contains a
>>DataGrid, do I need to manually null its data provider when I close the
>>TitleWindow? Or, will it be picked up automatically by the GC?
>It depends on who else has references to the dataProvider.  The DG has a
>listener on the dataProvider, so that means the dataProvider has a
>reference to the DG in order to call a function in the DG when the
>dataProvider changes.  If the dataProvider is part of some global model,
>then the DG will be held in memory by the dataProvider.  If the
>dataProvider is only referenced by the DG or other things in the
>TitleWindow, then it will all go away together.
>
>
>> 
>>
>>QUESTION 3: This last question also applies to a data provider for
>>ComboBox, or an ArrayList, or an Array that is used in a TitleWindow --
>>do I need to null those as well upon closing the window? Or, will they be
>>picked up automatically by the GC?
>See #2.
>


Mime
View raw message