We have a known bug filed that there are some GC issues with IE 7. I
don't have any workarounds unfortunately, you can try a brute force GC
by doing something like this:
try
{
var lc1:LocalConnection = new LocalConnection();
var lc2:LocalConnection = new LocalConnection();
lc1.connect('name');
lc2.connect('name');
}
catch (e:Error) {}
Matt
--- In [email protected], "One Person" <[EMAIL PROTECTED]> wrote:
>
> Description:
> We are creating a web-app built with Flex 2.
> This app uses some very large image files (From around 256K to over
> 600K)
> We have an image viewer section of our Flex app that will allow the
> user to move from one image to another.
> I was noticing that with our app in IE7 that memory useage would
> climb each time we grabbed a new image but even after letting it set
> for several minutes the memory usage would not go down. It was acting
> as if Garbage Collection was not getting called. So I added all kinds
> of code to make sure that we were letting go of the previous images
> to allow Garbage Collection to work.
>
> After 3 days of trying to track down the problem I decided to create
> a smaller Flex app that only used our image viewer control to limit
> the number of variables in the problem. After a few hours I still
> could not figure out the problem so I replace our image view with a
> standard <mx:Image> tag. The problem still existed after doing this.
> Having take our code out of the picutre I decided to compare results
> in FireFox. FireFox would Garbage Collect fairly quickly and the
> problem did not seem to exist using my test Flex app in FireFox.
>
> From what I can tell, IE7 and Flash (version 9.0.28.0) do not seem to
> work well at allowing Garbage Collection to work.
> I have the same version of Flash installed in FireFox 2.0.0.2 and
> there does not seem to be any problem there.
>
> The code below is what I used in my mxml file. To test it you will
> need to point to some kind of large images that you have access to.
> The images that I was using are on an internal network and so are
> unavailable to anyone on the outside.
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application
> layout="absolute"
> xmlns:mx="http://www.adobe.com/2006/mxml"
> initialize="init()"
> >
> <mx:Script>
> <![CDATA[
>
> public var urls:Array = new Array();
> public var index:int = 0;
> [Bindable] public var tempUrl:String;
>
> private function init() : void
> {
> urls.push( "http://10.7.2.8/07026/07026_00115.jpg" );
> urls.push( "http://10.7.2.8/07026/07026_00116.jpg" );
> urls.push( "http://10.7.2.8/07026/07026_00117.jpg" );
> urls.push( "http://10.7.2.8/07026/07026_00118.jpg" );
> urls.push( "http://10.7.2.8/07026/07026_00119.jpg" );
> urls.push( "http://10.7.2.8/07751/07751_00473.jpg" );
> urls.push( "http://10.7.2.8/07751/07751_00474.jpg" );
> urls.push( "http://10.7.2.8/07751/07751_00475.jpg" );
> urls.push( "http://10.7.2.8/07751/07751_00476.jpg" );
> urls.push( "http://10.7.2.8/07751/07751_00477.jpg" );
> urls.push( "http://10.7.2.8/07751/07751_00478.jpg" );
> urls.push( "http://10.7.2.8/07751/07751_00479.jpg" );
> urls.push( "http://10.7.2.8/42401/42401_00000000.JPG" );
> urls.push( "http://10.7.2.8/42401/42401_00000002.JPG" );
> urls.push( "http://10.7.2.8/42401/42401_00000003.JPG" );
> urls.push( "http://10.7.2.8/42401/42401_00000004.JPG" );
> urls.push( "http://10.7.2.8/42401/42401_00000005.JPG" );
> urls.push( "http://10.7.2.8/42401/42401_00000006.JPG" );
> urls.push( "http://10.7.2.8/42401/42401_00000007.JPG" );
> urls.push( "http://10.7.2.8/42401/42401_00000008.JPG" );
> index = 0;
> setCurrentIndex();
> }
>
> private function setCurrentIndex() : void
> {
> img.source = urls[index];
> }
>
> private function previous_Click() : void
> {
> if( --index < 0 )
> {
> index = urls.length-1;
> }
>
> setCurrentIndex();
> }
>
> private function next_Click() : void
> {
> if( ++index >= urls.length )
> {
> index = 0;
> }
>
> setCurrentIndex();
> }
> ]]>
> </mx:Script>
> <mx:Grid width="100%" height="100%">
> <mx:GridRow width="100%" height="30">
> <mx:GridItem width="100%" height="100%">
> <mx:Button label="<" click="previous_Click()"/>
> <mx:Button label=">" click="next_Click()"/>
> </mx:GridItem>
> </mx:GridRow>
> <mx:GridRow width="100%" height="100%">
> <mx:GridItem width="100%" height="100%">
> <mx:Image id="img" source="{tempUrl}" width="100%"
> height="100%"/>
> </mx:GridItem>
> </mx:GridRow>
> </mx:Grid>
> </mx:Application>
>
> I can't find a way to post my images so I hope this description is
> good enough.
>
> In IE7 the memory would climb each time I would move to the next
> image. On the left of this graph I loaded several images and then let
> IE7 sit. After a few minutes, and memory staying where it was, I
> continued click next to load images. Only after I hit a saturation
> point (Around 2.5Meg) would it Garbage Collect. My machine has 2Gig
> of Ram.
>
> The next rise in the graph is where I kept loading images over and
> over until the memory usage was about the same as just before the
> garbage collection happened the previous time. I let that sit for a
> while and then tried to load one more image. That caused the garbage
> collection to happen.
>
> The next 4 peaks in the graph are where I basicly clicked on the next
> button over and over as fast as I could and the Garbage Collection
> seemed to happen a little more often.
>
> In FireFox I ran similar tests of loading images and waiting in
> FireFox. The Garbage Collection seems to be working fairly well here.
> Each time I would load a new image the previous one would be cleaned
> up with garbage collection.
>
> So I'm not sure what can be done or if there is a fix for this. I
> really would LOVE to have access to the Garbage Collection in Flash
> so I could force things to happen when I am dumping a real large
> image.
>
> Thanks,
> Mike Collins
>