It was my understanding that Garbage Collection doesn't always occur right
away.  When you have orphaned objects sitting on the heap, they are *
eligible* for garbage collection.  That doesn't mean they will be removed
from memory right away.  Especially if you're testing for JUST that to
happen.  Usually GC occurs when more memory is needed.

Someone else could probably speak to this topic much more intelligently than
me.. but that was my understanding of how GC in general works.

Cheers

On Tue, Jan 27, 2009 at 6:04 AM, Sander Schuurman <
sander.schuur...@oswaldandruby.com> wrote:

> Thnx for the links... tried some, but still with no success... I now have
> the following:
>
> public class Image extends MovieClip
> {
>  private var _thumbLoader:Loader;
>  private var _largeLoader:Loader;
>
>  private var _thumb:Bitmap;
>  private var _large:Bitmap;
>
>  public function loadThumb() :void
>  {
>  _thumbLoader = new Loader();
>  _thumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,
>                                        thumbLoaded, false, 0, true);
>  _thumbLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,
>                                        errorOccured, false, 0, true);
>  _thumbLoader.load(new URLRequest(_tu));
>  }
>
>  private function thumbLoaded( e :Event ) :void
>  {
>  _thumb = Bitmap(e.currentTarget.content);
>  _thumb.smoothing = true;
>
>  addChild(_thumb);
>
>  _thumbLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,
>
>  thumbLoaded);
>  _thumbLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,
>
>  errorOccured);
>  _thumbLoader = null;
>
>  dispatchEvent(new Event(Image.IMG_LOADED));
>  }
>
>  public function loadLarge() :void
>  {
>  _largeLoader = new Loader();
>  _largeLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,
>                                        largeLoaded, false, 0, true);
>  _largeLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,
>                                        errorOccured, false, 0, true);
>  _largeLoader.load(new URLRequest(_lu));
>  }
>
>  private function largeLoaded( e :Event ) :void
>  {
>  _large = e.currentTarget.content;
>  _large.smoothing = true;
>  addChild(_large);
>
>  _largeLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,
>
>  largeLoaded);
>  _largeLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,
>
>  errorOccured);
>  //_largeLoader.content.dispose();
>  _largeLoader = null;
>
>  dispatchEvent(new Event(Image.IMG_LOADED));
>  }
>  public function disposeLarge() :void
>  {
>  if (_large)
>   {
>    removeChild(_large);
>    _large.bitmapData.dispose();
>    _large = null;
>   }
>  }
>
> public function dispose() :void
>  {
>  disposeLarge();
>
>  removeChild(_thumb);
>  _thumb.bitmapData.dispose();
>  _thumb = null
>  }
>
> }
>
> Anyone some tips? The large bitmap stays in memory...
>
> -----Original Message-----
> From: flashcoders-boun...@chattyfig.figleaf.com [mailto:
> flashcoders-boun...@chattyfig.figleaf.com] On Behalf Of Glen Pike
>  Sent: Wednesday, 21 January 2009 21:18
> To: Flash Coders List
> Subject: Re: [Flashcoders] Garbage Collection difficulty
>
> Hi,
>
>    I think if you use it locally, you still have to "dispose" of it:
>
>    http://www.bartclaessens.com/tag/memory-management/
>
>    http://labs.bigspaceship.com/2007/02/28/flash-performance-tips-part-ii/
>
>    http://www.gskinner.com/blog/archives/2006/06/as3_resource_ma.html
>
>    Search for "dispose" in some of these - also, one of the comments in
> Grant's article mentions testing in the IDE vs testing in the browser
> gives different results for loaded images.
>
>    HTH
>
>    Glen
>
> Sander Schuurman wrote:
> > That's a local variable right? Doesn't it happen automatic?
> > I must concentrate on the _large Sprite, isn't it?
> >
> >
> > -----Original Message-----
> > From: flashcoders-boun...@chattyfig.figleaf.com [mailto:
> flashcoders-boun...@chattyfig.figleaf.com] On Behalf Of Glen Pike
> > Sent: Wednesday, 21 January 2009 12:20
> > To: Flash Coders List
> > Subject: Re: [Flashcoders] Garbage Collection difficulty
> >
> > Hi,
> >
> >     Do you have to destroy the Bitmap you create in the largeLoaded
> > function???
> >
> >     Glen
> >
> > Sander Schuurman wrote:
> >
> >> Hi cool list,
> >>
> >> I'm struggling with my Image class. It's supposed to load and unload
> different sized images dynamicly; but I can't seem to get it to work
> properly. The loading works fine, but the unloading not for the full 100%.
> It visually unloads the image, but it remains in the memory. I have tried
> several different things; I'm a bit stuck now.
> >>
> >> Here is a stripped class:
> >>
> >> public class Image extends MovieClip
> >> {
> >> ...
> >>             private var _largeLoader:Loader;
> >> private var _large:Sprite;
> >> ...
> >> public function Image(     thumbUrl           :String,
> >>                                                 normalUrl
>  :String,
> >>                                                 largeUrl :String   )
> >> {
> >>                         _tu = thumbUrl;
> >>                         _nu = normalUrl;
> >>                         _lu = largeUrl;
> >> }
> >> ...
> >> public function loadLarge() :void
> >> {
> >>                         _largeLoader = new Loader();
> >>
> _largeLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, largeLoaded,
> false, 0, true);
> >>
> _largeLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,
> errorOccured, false, 0, true);
> >>                         _largeLoader.load(new URLRequest(_lu));
> >> }
> >>
> >> private function largeLoaded( e :Event ) :void
> >> {
> >>                         var b:Bitmap = Bitmap(largeLoader.content);
> >>
> >>
> _largeLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,
> largeLoaded);
> >>
> _largeLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,
> errorOccured);
> >>                         _largeLoader = null;
> >>
> >>                         _large = new Sprite();
> >>                         _large.addChild(b);
> >>                         addChild(_large);
> >>
> >>                         dispatchEvent(new Event(Image.IMG_LOADED));
> >> }
> >> ...
> >>             public function clear( full :Boolean = false ) :void
> >>             {
> >>                         // clear normal img and large img
> >>                         ... ?
> >>
> >>                         // tried things like:
> >>
> >>                         //_normal.removeChildAt(0);
> >>                         //_normal = null;
> >>                         //removeChild(_normal);
> >>                         //_large.removeChildAt(0);
> >>                         //_large             = null;
> >>                         //removeChild(_large);
> >>                         //delete(_normal.removeChildAt(0));
> >>                         //delete(_large.removeChildAt(0));
> >>
> >>                         // removes the images visually, but they won't
> get GC'ed
> >>
> >> if (full)
> >> {
> >>             // clear thumb and itself
> >> }
> >>             }
> >> }
> >>
> >> Thanks in advance!
> >> _______________________________________________
> >> Flashcoders mailing list
> >> Flashcoders@chattyfig.figleaf.com
> >> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >>
> >>
> >>
> >>
> >
> > _______________________________________________
> > Flashcoders mailing list
> > Flashcoders@chattyfig.figleaf.com
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
> > _______________________________________________
> > Flashcoders mailing list
> > Flashcoders@chattyfig.figleaf.com
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
> >
> >
>
> --
>
> Glen Pike
> 01326 218440
> www.glenpike.co.uk <http://www.glenpike.co.uk>
>
> _______________________________________________
> Flashcoders mailing list
> Flashcoders@chattyfig.figleaf.com
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> _______________________________________________
> Flashcoders mailing list
> Flashcoders@chattyfig.figleaf.com
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>



-- 

Cheers,
Nate
----------------------------------------
http://blog.natebeck.net
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to