我有一个Flex代码,我在其中多次为字符串变量赋值。我希望垃圾收集器释放与先前分配相关联的内存,但它似乎没有这样做。每次进行分配时(通过单击调用onMouseDown的图像),分析器的内存越来越多,而不仅仅是第一次。此外它永远不会减少。
以下是代码:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
creationComplete="doInit()">
<fx:Script>
<![CDATA[
var backup:String;
private function doInit():void {
img.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
}
private function onMouseDown(event:MouseEvent):void {
backup=getSubStr();
System.gc();
}
private function getSubStr():String {
var subStr:String = new String;
var x:Number=Math.random();
for (var h:int=0;h<8000;h++)
subStr+=x.toString();
return subStr;
}
]]>
</fx:Script>
<s:Image id="img" source="@Embed(source='imagenes/mapa.png')"/>
</s:Application>
在完整的代码中,我没有调用垃圾收集器,这只是在这里进行测试。
我已经阅读(在AS3 String Memory Leak中)Flash使用Master Strings。作为探查器字符串,游荡对象指向行&#34; subStr + = x.toString();&#34;我认为字符串的这种串联可能与问题有关。但是我不知道如何防止泄漏。
任何反馈都将不胜感激。