tag:robotlegs.tenderapp.com,2009-10-18:/discussions/problems/348-injectors-m_attendedtoinjectees-keeps-objects-aliveRobotlegs: Discussion 2018-10-18T16:35:29Ztag:robotlegs.tenderapp.com,2009-10-18:Comment/86164622011-07-14T19:23:36Z2011-07-14T19:25:06ZInjector's m_attendedToInjectees keeps objects alive<div><p>Hello robots!</p>
<p>I have a problem with Flash Player's GC. My app consits of
MainContext, which loads ChildContext and inject's it's injector as
parentInjector using Joel's Modular utility. Source codes are in
attachement.</p>
<p><img src="http://i53.tinypic.com/102o2ti.png" alt=
"profiler"></p>
<p>Mediator which was injected into is inserted into
m_attendedToInjectees Dictionary(true) in SwiftSuspendersInjector
and it is not disposed after other references are lost. Click top
left button to unload ChildContext and watch objects from
<em>com.cuketa.test.profilerissue.child</em> package not dispose
because of some mysterious references.</p>
<p>I am using Flash Builder 4.5.1 Profiler to see references and
there is only to reference to m_attendedToInjectees Dictionary.</p>
<p>1) is m_attendedToInjectees needed or useful in some way? or can
I remove it safely?<br>
2) What other object could hold reference to this object and not
show up in FB Profiler?<br>
3) Is it possible that weak-keyed Dictionary is not releasing it's
key correctly?</p></div>Tomas Mirezkotag:robotlegs.tenderapp.com,2009-10-18:Comment/86164622011-07-15T00:57:48Z2011-07-15T00:57:48ZInjector's m_attendedToInjectees keeps objects alive<div><p>Hmm, I thought I wrote a reply :(</p></div>Weyert de Boertag:robotlegs.tenderapp.com,2009-10-18:Comment/86164622011-07-15T00:59:15Z2011-07-15T00:59:16ZInjector's m_attendedToInjectees keeps objects alive<div><p>A screenshot of my Flash Builder not showing any instances of
child context. Also when I execute "Find loitering objects" after
creating a memory snapshot before and after click on the button. I
only have two items left "Class" and "Object"</p></div>Weyert de Boertag:robotlegs.tenderapp.com,2009-10-18:Comment/86164622011-07-15T07:45:34Z2011-07-15T08:15:07ZInjector's m_attendedToInjectees keeps objects alive<div><p>Curious.... we have 3 Windows machines here with 2x Flash
Builder 4.5 and 1x Flash Builder 4.5.1 and noone can get your
results.</p>
<p>Can somebody with Windows try this as well, please?</p></div>Tomas Mirezkotag:robotlegs.tenderapp.com,2009-10-18:Comment/86164622011-07-15T08:04:57Z2011-07-15T08:04:57ZInjector's m_attendedToInjectees keeps objects alive<div><h1>Lost message:</h1>
<p>From: Weyert<br>
Subject: Injector's m_attendedToInjectees keeps objects alive</p>
<p>Where do you see this? If I compile your project and then make a
memory snapshot before pressing the button and one after pressing
the button. After a bit of waiting in between of course! Anyways,
if I know do a "Find loitering objects" only two items are listed
are Class and Object referring to IDisposable.</p>
<p>Also if I check Live References it doesn't have any instances of
ChildContext, ChildSpriteMediator, ChildSprite etc.</p>
<p>I am unable to reproduce your GC Root reference for the
ChildSpriteMediator.</p>
<p>View this Discussion online: <a href=
"http://knowledge.robotlegs.org/discussions/problems/348-injectors-m_attendedtoinjectees-keeps-objects-alive">
http://knowledge.robotlegs.org/discussions/problems/348-injectors-m...</a><br>
Attachments:<br>
- Screen_shot_2011-07-15_at_02.49.43.png <a href=
"http://knowledge.robotlegs.org/discussions/problems/348/assets/b7bc84138c6fb4f2ffe4dd6af9fb539029c2e578/Screen_shot_2011-07-15_at_02.49.43.png">
http://knowledge.robotlegs.org/discussions/problems/348/assets/b7bc...</a></p></div>Tomas Mirezkotag:robotlegs.tenderapp.com,2009-10-18:Comment/86164622011-07-15T09:07:01Z2011-07-15T09:11:17ZInjector's m_attendedToInjectees keeps objects alive<div><p>Thanks Tomas. Did you also try it with memory snapshots? That
forces garbage collection.</p>
<p>I will give it a try on my Windows workstation during my lunch
break</p></div>Weyerttag:robotlegs.tenderapp.com,2009-10-18:Comment/86164622011-07-15T09:34:02Z2011-07-15T09:34:02ZInjector's m_attendedToInjectees keeps objects alive<div><p>These are my steps to reproduce:</p>
<ul>
<li>start Profiler in Flash Builder 4.5.1 Standalone for Windows in
Flash Player 10.3 Debugger
(<em>flashplayer_10_3_sa_debug.exe</em>)</li>
<li>Configure Profiler</li>
</ul>
<p><img src="http://i56.tinypic.com/x240mu.png" alt=
"configure profiler"></p>
<ul>
<li>Take memory snapshot</li>
<li>click "<em>dispose child module</em>" button</li>
<li>Run Garbage Collector</li>
<li>Take Memory Snapshot</li>
</ul>
<p><img src="http://i51.tinypic.com/wrflhk.png" alt="snapshot"></p></div>Tomas Mirezkotag:robotlegs.tenderapp.com,2009-10-18:Comment/86164622011-07-15T10:47:40Z2011-07-15T10:47:40ZInjector's m_attendedToInjectees keeps objects alive<div><h1>Issue solved</h1>
<p>Flash Player Debugger 10.3 or 10.2 has some issue in GC.</p>
<p>I tested it in AIR 2.7 and Flash Player 11 Beta Debugger and
objects are disposed as they should.</p></div>Tomas Mirezkotag:robotlegs.tenderapp.com,2009-10-18:Comment/86164622011-07-15T10:51:11Z2011-07-15T10:51:11ZInjector's m_attendedToInjectees keeps objects alive<div><p>Aah, I used the standalone player of 10.2. Maybe that's the
difference.</p></div>Weyert