我正在使用 Adobe Flash CS 4,想知道是否有可用的分析器或内存分析工具? (动作脚本 3)。我知道有适用于 Flex 的工具,但是有适用于 Flash CS 4 的工具吗?谢谢。
我确信那里有一个程序,仍在寻找我自己,但我:
大多数 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 项目来说,它会导致您的内存积累然后下降。这称为锯齿图,这是完全正常的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)