>
in the removed view I get ride of the listeners in the unload
event
The only 'unload' event I know of in Flex 2 is in SWFLoader.
Are your views SWFs that you're loading into a SWFLoader?
-
Gordon
________________________________________
From:
[EMAIL PROTECTED]ups.com
[mailto:[EMAIL PROTECTED]ups.com]
On Behalf Of Jason Hawryluk
Sent: Friday, June 23, 2006 12:21 AM
To:
[EMAIL PROTECTED]ups.com
Subject:
RE: [flexcoders] Garbage collection and removeChild [Flex 2 beta
3]?
Thank you, this clears some things up. :)
I was actually
allocating memory up to 100mb and then seeing if it's
collected by
letting it sit there with no activity, and watching the process
memory
usage (couldn't think of another way).
"You can later remove a
component from a container using the removeChild()
method. If
there are no references to the component, it is eventually
deleted from
memory by the garbage collection mechanism of Flash Player."
The
above taken from the doc's, lead me to believe that there was a
garbage
collection process every (x)min's. If the player only does this
when it
needs to get back memory, then that would explain why I did not
see it
collected.
What lead me to the question was the following
scenario:
I have a single component based on the viewstack for the
views, this
component listens for event state changes in the program to
load new views,
the events it gets come from another class (think
observer pattern). So with
this I can load multiple copies of a view
with different data(this is where
I seen a problem). Even though a view
was removed from the viewstack it
still received data change events
(which it listens to in order to see if it
needs to load new data
(think chain of responsibility here) where each view
gets the event and
decides if the data is destined for it (the data it self
is just a guid
that I use to reference the xml data needed to be loaded).
The
scenario may seem weird, but no object knows what data is being
accessed
except the view that is responsible for displaying
it.
If the view was really unloaded then the event should not get
through. So
now I remove a view, and in the removed view I get ride of
the listeners in
the unload event, clean up any child
objects/classes/data providers etc..
So the view >>
dataprovider >> modelloader >> etc..
>> controller
>> etc..
From what I understand from your answer is that if
the view is removed, and
I clean up the listeners and "local"
references i.e. (set dataprovider and
controller to null)
view
>> dataprovider
>> controller
Then I should be
alright. Is this correct?
My original thinking was that if it's
removed to the garbage collection how
is it that it's still getting the
events? I was thinking that this was a
protected space. I can't get the
instance back from the garbage collection,
however the instance is
still very much alive and kicking.
Is this making sense? Are these
correct assumptions?
Thank you for your
help.
Jason
-----Message d'origine-----
De : [EMAIL PROTECTED]ups.com
[mailto:[EMAIL PROTECTED]ups.com]De
la
part de Gordon Smith
Envoyé : vendredi 23 juin 2006 08:30
À :
[EMAIL PROTECTED]ups.com
Objet
: RE: [flexcoders] Garbage collection and removeChild [Flex 2 beta
3]?
> it does not seem to be collected
What are you doing
that you think should cause it to be collected? Do you
keep allocating
memory indefinitely? An object may never get garbage
collected unless
the Player decides it needs the memory.
> Should one have to
remove all objects created through the
> or just on the child being
removed?
I'm not really following your texavery >> toto
>> titi example because you
didn't explain which one you're
removing. Let's suppose you're removing toto
as a child of texavery. If
you're not keeping any references to toto or
titi, then both become
eligible for garbage collection; the fact that toto
holds a reference
to its child titi doesn't matter, because the two of them
are isolated
from all other objects.
> Is there a way to force the garbage
collection clean up,
> or destroy an object completely?
There
are no APIs for controlling garbage collection. Once there are
no
references to an object, it becomes eligible for garbage collection.
It
doesn't mean that it actually gets garbage collected.
Is your
app exhibiting unbounded memory growth to the point where it
consumes
all the machine's memory?
-
Gordon
________________________________________
From:
[EMAIL PROTECTED]ups.com
[mailto:[EMAIL PROTECTED]ups.com]
On
Behalf Of Harald Dehn
Sent: Thursday, June 22, 2006 3:55
AM
To: [EMAIL PROTECTED]ups.com
Subject:
WG: [flexcoders] Garbage collection and removeChild [Flex 2
beta
3]?
Is there any answer to this thread? I do have the same
problems with the
garbage
collector.
________________________________________
Von:
[EMAIL PROTECTED]ups.com
[mailto:[EMAIL PROTECTED]ups.com]
Im
Auftrag von sourcecoderia
Gesendet: Dienstag, 20. Juni 2006
18:06
An: [EMAIL PROTECTED]ups.com
Betreff:
[flexcoders] Garbage collection and removeChild [Flex 2 beta 3]?
From
the documents when using removeChild the removed display item is
added
to the garbage collection for later removal. However I'm
reusing
component instances and creating new instance of the same (a
sort of
tabbed interface where children are created and removed
at
will.
The listeners for the child component are removed and
other objects
set to null, but; it does not seem to be
collected.
Should one have to remove all objects created through
the chain or
just on the child being removed?
I.e. if I
instantiate a class called toto through a component called
texavery and
toto creates an instance of titi do I have to unload all
objects
created by or in the children following the entire chain
texavery
>> toto >> titi
where each one unloads it's
owned/created objects?
Or is this cleaned up from the child object on
down?
Is there a way to force the garbage collection clean up, or
destroy
an object completely?
I did wait to see if it unloaded
25mins and still no change in the
process memory usage. However I'm
only at this time unloading objects
created by the child component and
not it's children's objects.
So unload the entire chain or just the
first ?
Is removeChild working properly ?
How is this supposed
to work, and are there any best practices in
regards to
this?
Thanks,
Jason