4

Adobe Flash CS 4 を使用していますが、プロファイラやメモリ分析ツールを利用できるか知りたいです。(アクションスクリプト 3)。Flex 用の利用可能なツールがあることは知っていますが、代わりに Flash CS 4 用のツールはありますか? ありがとう。

4

3 に答える 3

3

まだ自分自身を探しているプログラムがそこにあると確信していますが、フォーラムでこれを見つけました:

ほとんどの AS3 初心者は何かをプログラミングしたことがあり、その後メモリ リークについて耳にしました。そのため、最初に既存のコードのリークを検出して修正する方法について説明し、次にプログラミングを開始するときに取るべき予防策について説明します。

では、プログラムに問題があるかどうかはどうすればわかりますか? 見分ける最も明確な方法は、クラッシュするかどうかですが、それは非常に非現実的です。幸いなことに、AS3 には System というオブジェクトがあり、そのプロパティによって Flash が実行されている条件を知ることができます。たとえば、System.totalMemory は、プログラムを実行している Flash Player インスタンスによって使用されているコンピューター メモリの量です。System.totalMemory の値はプラットフォームごとに異なる方法で決定されるため、値を測定するときは一度に 1 つの Flash Player インスタンスのみを実行することをお勧めします。

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 プロジェクトでは、メモリが蓄積されてから減少します。これは鋸歯グラフと呼ばれ、完全に正常です。

于 2009-12-09T16:20:29.963 に答える
2

これは、actionscript 3 のメモリ分析とプロファイリングに適したツールですhttp://demonsterdebugger.com/

于 2011-06-16T13:46:06.333 に答える
1

Flash Player 10.1 プレビュー ビルドのリリースに伴い、アドビはメモリ監視を行うコンポーネントを公開しました。メモリ監視コンポーネント

于 2009-12-15T18:22:18.757 に答える