【问题标题】:ActionScript 3 Profiler & Memory Analysis ToolActionScript 3 Profiler 和内存分析工具
【发布时间】:2010-12-24 18:25:12
【问题描述】:

我正在使用 Adob​​e Flash CS 4,想知道是否有可用的分析器或内存分析工具? (动作脚本 3)。我知道有适用于 Flex 的工具,但是否有适用于 Flash CS 4 的工具?谢谢。

【问题讨论】:

    标签: flash memory actionscript profiler analysis


    【解决方案1】:

    这是 actionscript 3 内存分析和剖析的好工具http://demonsterdebugger.com/

    【讨论】:

    • 它有内存监视器,非常有助于发现内存泄漏。
    【解决方案2】:

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

    【讨论】:

    • 这看起来很有用,但我注意到当我测试该工具(.fla)时,内存不断上升,然后又下降并不断重复......知道为什么吗?
    • 我怀疑这是正常行为:内存上升,车库收集器清理,内存下降,重复。
    【解决方案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 项目,它会导致您的内存累积然后下降。这叫做锯齿图,完全正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 2011-01-07
      • 2011-10-15
      相关资源
      最近更新 更多