ActionScript 3 Profiler&内存分析工具

时间:2009-12-09 09:37:48

标签: flash memory actionscript profiler analysis

我正在使用Adobe Flash CS 4,并且想知道是否有可用的探查器或内存分析工具? (动作3)。我知道Flex有可用的工具,但Flash CS 4是否适用?感谢。

3 个答案:

答案 0 :(得分:3)

我确信那里有一个程序,仍在寻找自己,但我found this on a forum

大多数AS3初学者已经编程了一些东西然后听说了内存泄漏。首先,我将介绍检测和修复预先存在的代码中的泄漏的方法,然后讨论在开始编程时要采取的预防措施。

那你怎么知道你的程序是否有问题?最明确的方法是它是否崩溃,但这是非常不切实际的。幸运的是,在AS3中,我们有一个名为System的对象,其属性告诉我们Flash运行的条件。例如,System.totalMemory是运行程序的Flash Player实例使用的计算机内存量。不同的平台以不同的方式确定System.totalMemory的值,因此我建议您在测量其值时一次只运行一个Flash播放器实例。

package {

    import flash.utils.Timer;
    import flash.system.System;

    public class SpitMem {
        var t:Timer = new Timer(0);
        var n:int, lastN:int;

        public function SpitMem():void {
            t.addEventListener("timer", spit2, false, 0, true);
        }

        private function spit1():void {
            trace(System.totalMemory);
        }

        private function spit2():void {
            n = System.totalMemory;
            if (n != lastN)
                trace(n);
            lastN = n;
        }
    }
}

如果您在上面创建SpitMem类的实例并运行代码,则可以在“输出”窗口中观察程序内存使用情况的波动。但是,这是很多信息,并且在这种格式下,它无法让您清楚地了解程序如何使用其内存。

(请注意spit1()和spit2()之间的差异。如果没有更改,spit2()将不会输出System.totalMemory。稍后我将展示类似的逻辑如何将我们的数据变成更多的东西是有用的。)

如果您在电子表格程序中制作数据图表,您会发现它似乎总是在增加。这并不意味着你有内存泄漏。 Flash的内置内存管理允许某些类型的数据处于适当的位置,直到有适当的时间来摆脱它。这称为垃圾收集,对于大多数Flash项目,它会导致内存累积然后下降。这被称为锯齿图,这是完全正常的。

答案 1 :(得分:2)

这是动作脚本3内存分析和分析http://demonsterdebugger.com/

的好工具

答案 2 :(得分:1)

随着Flash Player 10.1预览版本的发布,Adobe推出了一个为您进行内存监控的组件:Memory Monitoring Component