有没有办法避免字符串泄漏?

时间:2014-04-28 16:44:23

标签: string actionscript-3 flex memory-leaks

我有一个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;我认为字符串的这种串联可能与问题有关。但是我不知道如何防止泄漏。

任何反馈都将不胜感激。

0 个答案:

没有答案