ActionScript 3 性能分析器和内存分析工具

4

我正在使用Adobe Flash CS 4,想知道是否有可用于其上的分析器或内存分析工具?(ActionScript 3)。我知道Flex有可用的工具,但是Flash CS 4有没有呢?谢谢。

3个回答

3

我相信有一个程序可以解决这个问题,我自己还在寻找中,但是我在一个论坛上发现了这个

大多数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()之间的区别。如果System.totalMemory没有改变,spit2()将不会输出。稍后我将展示如何使用类似的逻辑将我们的数据转换为更有用的形式。)
如果您在电子表格程序中制作数据图表,您会发现它似乎总是在增加。这并不意味着您有内存泄漏。Flash内置的内存管理允许某些类型的数据保留直到适当的时候才会清除它。这被称为垃圾回收,在大多数Flash项目中,它会导致内存累积然后下降。这被称为锯齿状图表,这是完全正常的。

2

它有内存监视器,非常有助于发现内存泄漏。 - Sat

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

这看起来很有用,但我注意到当我测试这个工具(.fla文件)时,内存不断上升然后又下降并且一直重复..你知道为什么吗? - Malcolm Lim
1
我怀疑这是正常的行为:内存增加,垃圾回收器清理,内存下降,重复。 - tommy chheng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接