このパッケージは、Adobe Flash Builder で配布されるプロファイリングエージェントによって使用され、プロファイリングエージェントのカスタマイズや独自のメモリテストを構築するために提供されています。
startSampling() メソッドおよび Flash Player デバッグ版 9.0.115.0 以降を使用してメモリ使用量のサンプルを収集します。次に 
getSamples() メソッドを使用して、メモリ使用量のサンプルを取得します。各サンプルは、実行中のアプリケーションの独立した間隔のメモリ使用量を表します。次に 
flash.sampler パッケージの他のメソッドを使用して、メモリ使用量の情報を分析します。
メモ:独自のプロファイリングエージェントを作成する場合、"mm.cfg" ファイルで PreloadSwf プロパティを設定することで、エージェント SWF ファイルをプリロードできます。
PreloadSwf=C:/Documents and Settings/username/testingagent.swf?aparam=asetting
プリロードされた各エージェント SWF ファイルは独自のセキュリティドメインを持ち、プロファイリングされている SWF ファイルから独立したセキュリティサンドボックスで実行されます。flash.sampler パッケージのメソッドを実行するには、エージェント SWF ファイルが localTrusted ファイルパスに配置されている必要があります(セキュリティセンターを参照してください)。
パブリックメソッド 
|  | 関数 | 定義元 | 
|---|
|  |  | 
     Sample オブジェクトの現在のセットをクリアします。 | flash.sampler | 
|  |  | 
     get 関数が実行された回数を返します。 | flash.sampler | 
|  |  | 
     メソッドが実行された回数を返します。 | flash.sampler | 
|  |  | 
     関数のレキシカルスコープを公開して、関数インスタンスで保持されている間、キャプチャされたスコープオブジェクト(アクティベーションオブジェクトとスコープを含む)が、プロファイラーによって表示されるようにします。 | flash.sampler | 
|  |  | 
     このストリングが依存しているマスターストリングを返します。このストリングが他のストリングに依存していない場合は null を返します。 | flash.sampler | 
|  |  | 
     指定されたオブジェクトのすべてのメンバー(プライベートメンバーを含む)を含むオブジェクトを返します。 | flash.sampler | 
|  |  | 
     収集されたサンプルの数を返します。 | flash.sampler | 
|  |  | 
     最後のサンプリングセッションからメモリ使用状況 Sample インスタンスのオブジェクトを返します。 | flash.sampler | 
|  |  | 
     通常 AS で表示できないメソッドクロージャから、保存された "this" を返します。 | flash.sampler | 
|  |  | 
     set 関数が実行された回数を返します。 | flash.sampler | 
|  |  | 
    Flash Player 9.0.115.0 以降のデバッグ版で使用した場合、指定されたオブジェクトのメモリ内サイズを返します。 | flash.sampler | 
|  |  | 
     プロパティが get/set 関数によって定義されているかどうかを確認します。 | flash.sampler | 
|  |  | 
     サンプリング処理を一時的に停止します。 | flash.sampler | 
|  |  | 
     サンプラーに対し、Flash Player からの内部割り当てに NewObjectSamples を作成することを指示します。 | flash.sampler | 
|  |  | 
     サンプラーのコールバック関数を設定します。この関数は、サンプルストリームがほとんど使い切られると呼び出されます。 | flash.sampler | 
|  |  | 
     メモリ使用状況 Sample オブジェクトを収集する処理を開始します。 | flash.sampler | 
|  |  | 
     メモリ使用状況 Sample オブジェクトを収集する処理を終了し、サンプリング処理に使用されたリソースを解放します。 | flash.sampler | 
 public function clearSamples():void| 言語バージョン: | ActionScript 3.0 | 
| ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0 | 
     Sample オブジェクトの現在のセットをクリアします。このメソッドは通常、getSamples() を呼び出して Sample オブジェクトを繰り返し処理した後に呼び出します。 Flash Player デバッグ版のみ。
     
関連する API エレメント
 public function getGetterInvocationCount(obj:Object, qname:QName):Number| 言語バージョン: | ActionScript 3.0 | 
| ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0 | 
     get 関数が実行された回数を返します。isGetterSetter() を使用して get/set 関数があることを確認してから getGetterInvocationCount() を使用してください。 Flash Player デバッグ版のみ。
     
 パラメーター 
|  | obj:Object— メソッドインスタンスまたはクラスです。 | 
|  | 
|  | qname:QName— qname がundefinedの場合は、コンストラクター関数の繰り返し回数を返します。 | 
戻り値関連する API エレメント
 public function getInvocationCount(obj:Object, qname:QName):Number| 言語バージョン: | ActionScript 3.0 | 
| ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0 | 
     メソッドが実行された回数を返します。パラメーター obj が Class で、パラメーター qname が undefined の場合、このメソッドはコンストラクター関数の繰り返し回数を返します。 Flash Player デバッグ版のみ。
     
 パラメーター 
|  | obj:Object— メソッドインスタンスまたはクラスです。メソッドインスタンスが使用できない場合は、クラスを使用してインスタンス関数の呼び出し回数を取得できます。objがundefinedの場合、このメソッドはqnameで名前が指定されたパッケージスコープ関数の回数を返します。 | 
|  | 
|  | qname:QName— qname がundefinedの場合は、コンストラクター関数の繰り返し回数を返します。 | 
戻り値
 例  (
                 この例の使用方法 )
            
 
 package 
{
  public function exec3() {}
  import flash.sampler.*;
  import flash.system.*;
  import flash.display.Sprite;
  import flash.utils.*;
  public class getInvocationCountTest extends Sprite
    {
      public function getInvocationCountTest()
    {
      for(var i:int=0;i<10;i++)
        exec();
      for(var i:int=0;i<10;i++)
        exec2();
      for(var i:int=0;i<10;i++)
        exec3();
      // get exec QName
      var execName:QName;
          var name:QName;
      var fooName:QName;
      for each(name in getMemberNames(this)) {
          if(name.localName == "exec")
          execName = name;
          if(name.localName == "foo")
          fooName = name;
      }
      var exec2Name:QName;
      for each(name in getMemberNames(getInvocationCountTest)) {
          if(name.localName == "exec2")
          exec2Name = name;
      }
      // execute get/set
      foo = "bar";
      trace(isGetterSetter(this, fooName));
      trace(getSetterInvocationCount(this, fooName) == 1);
      trace(getGetterInvocationCount(this, fooName) == 0);
      foo;
      
      trace(getSetterInvocationCount(getInvocationCountTest, fooName) == 1);
      trace(getGetterInvocationCount(getInvocationCountTest, fooName) == 1);
      trace(getInvocationCount(this, execName) == 10);
      trace(getInvocationCount(getInvocationCountTest, execName) == 10);
      trace(getInvocationCount(getInvocationCountTest, exec2Name) == 10);
      trace(getInvocationCount(getInvocationCountTest, undefined) == 1);
    
      getTimer();
      getTimer();
      trace(getInvocationCount(undefined, new QName("", "trace")) == 9);
      trace(getInvocationCount(undefined, new QName("flash.utils", "getTimer")) == 2);
      trace(getInvocationCount(undefined, new QName("", "exec3")) == 10);
    }
      private function exec():void {}
      private static function exec2():void {}
      private function get foo():String { return "fo"; }
      private function set foo(s:String) { }
      
    }
}
  public function getLexicalScopes(obj:Function):Array
     関数のレキシカルスコープを公開して、関数インスタンスで保持されている間、キャプチャされたスコープオブジェクト(アクティベーションオブジェクトとスコープを含む)が、プロファイラーによって表示されるようにします。
     
 パラメーター 
戻り値|  | Array— レキシカルスコープ要素を含んでいる配列 | 
 public function getMasterString(str:String):String| 言語バージョン: | ActionScript 3.0 | 
     このストリングが依存しているマスターストリングを返します。このストリングが他のストリングに依存していない場合は null を返します。例えば、String.substr() を呼び出すと、返されたストリングは、効率性のために、通常、元のストリングへのポインターとして実装されます。通常の使用では、実装に関する詳細はユーザーには表示されませんが、プロファイラーを使用してプログラムのメモリの消費量を分析すると、混乱が生じる場合があります。ストリングが消費しているメモリが、そのストリングの値に必要なメモリ量よりも少なく示される可能性があるからです。さらに、ストリングは、他のストリングのマスターなので、メモリだけに保持される場合があります。getMasterString() を使用すると、プロファイラーによって、ストリングの依存性の正確なグラフをユーザーに示すことができます。
     
 パラメーター 
戻り値|  | String— 渡されたストリングが依存しているストリングです。渡されたストリングが他のストリングに依存していない場合は null です。 | 
 public function getMemberNames(o:Object, instanceNames:Boolean = false):Object| 言語バージョン: | ActionScript 3.0 | 
| ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0 | 
     指定されたオブジェクトのすべてのメンバー(プライベートメンバーを含む)を含むオブジェクトを返します。返されたオブジェクトを繰り返し処理してすべての値を確認できます。このメソッドは flash.utils.describeType() メソッドと似ていますが、プライベートメンバーも確認することが可能で、XML オブジェクトを作成するという中間手順を省略できます。 Flash Player デバッグ版のみ。
     
     
 パラメーター 
|  | o:Object— 解析するオブジェクトです。 | 
|  | 
|  | instanceNames:Boolean(default =false)— オブジェクトが Class の場合、instanceNames に true を指定すると、o がクラスのメンバー名ではなくクラスのインスタンスであるかのようにインスタンス名が報告されます。 | 
戻り値|  | Object— 各プロパティの QNames を取得するためにfor each..inループで繰り返し処理するオブジェクトです。 | 
関連する API エレメント
 例  (
                 この例の使用方法 )
            
 次の例では、
getMemberNames() メソッドを使用してオブジェクトを解析し、そのメンバーの 
buttonMode、
filters、
dispatchEvent の各プロパティを表示します。メモリプロファイラーを使用するには、Flash Player デバッグ版の 9.0.115.0 以降がインストールされている必要があります。
 package 
{
  import flash.sampler.*;
  import flash.system.*;
  import flash.display.Sprite;
  public class getMemberNamesTest extends Sprite
    {
      public function getMemberNamesTest()
    {
      var name_iter = getMemberNames(this);
      var o={};
      for each(var name:QName in name_iter) {
        o[name.localName] = "got it";
      }
      name_iter = getMemberNames(this);
      var count=0;
      for(var dum in name_iter) {
        count++;
      }
      trace(count == 1);
      // my member
      trace("buttonMode" in o);
      // inherited member
      trace("filters" in o);
      // inherited function
      trace("dispatchEvent" in o);
      var name_iter = getMemberNames(getMemberNamesTest, true);
      var o={};
      for each(var name:QName in name_iter) {
        o[name.localName] = "got it";
      }
      // my member
      trace("buttonMode" in o);
      // inherited member
      trace("filters" in o);
      // inherited function
      trace("dispatchEvent" in o);
    }
    }
}
 public function getSampleCount():Number| 言語バージョン: | ActionScript 3.0 | 
| ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0 | 
     収集されたサンプルの数を返します。 Flash Player デバッグ版のみ。
     
     
戻り値|  | Number— Sample インスタンスのイテレータです。 | 
関連する API エレメント
 public function getSamples():Object| 言語バージョン: | ActionScript 3.0 | 
| ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0 | 
     最後のサンプリングセッションからメモリ使用状況 Sample インスタンスのオブジェクトを返します。 Flash Player デバッグ版のみ。
     
     
戻り値|  | Object— Sample インスタンスのイテレータです。 | 
関連する API エレメント
 public function getSavedThis(obj:Function):Object
     通常 AS で表示できないメソッドクロージャから、保存された "this" を返します。
     
 パラメーター 
戻り値|  | Object— MethodClosure の "this" であるオブジェクト。 | 
 public function getSetterInvocationCount(obj:Object, qname:QName):Number| 言語バージョン: | ActionScript 3.0 | 
| ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0 | 
     set 関数が実行された回数を返します。isGetterSetter() を使用して get/set 関数があることを確認してから getSetterInvocationCount() を使用してください。 Flash Player デバッグ版のみ。
     
 パラメーター 
|  | obj:Object— メソッドインスタンスまたはクラスです。 | 
|  | 
|  | qname:QName— qname がundefinedの場合は、コンストラクター関数の繰り返し回数を返します。 | 
戻り値関連する API エレメント
 public function getSize(o:*):Number| 言語バージョン: | ActionScript 3.0 | 
| ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0 | 
    Flash Player 9.0.115.0 以降のデバッグ版で使用した場合、指定されたオブジェクトのメモリ内サイズを返します。デバッグ版でない Flash Player で使用した場合、このメソッドは 0 を返します。
    
 パラメーター 
|  | o:*— メモリ使用状況を解析するオブジェクトです。 | 
戻り値|  | Number— 指定されたオブジェクトで使用されたメモリのバイト数です。 | 
 例  (
                 この例の使用方法 )
            
 次の例では、
startSampling() と 
pauseSampling を使用して Sample オブジェクトを収集します。そして、Sample オブジェクトを繰り返し処理して 
id の値とサイズを取得します。
System.gc() を呼び出して現在のプロセスを停止した後、deletedObjectSample オブジェクトを元の 
id 値と比較してそのサイズを表示します。メモリプロファイラーを使用するには、Flash Player デバッグ版の 9.0.115.0 以降がインストールされている必要があります。
 package {
  import flash.sampler.*;
  import flash.system.*;
  import flash.display.Sprite;
  import flash.utils.Dictionary;
  public class deletedObjectSize extends Sprite {
    public function deletedObjectSize() {
      startSampling();
      var obj = {};
      pauseSampling();
      var id:Number;
      var sampleIter = getSamples();
      for each(var s:Sample in sampleIter) {
    id = s.id;
      }
      
      sampleIter = getSamples();
      var count=0;
      for(var dum in sampleIter) {
    count++;
      }
      trace(count == 1);
      var size:Number = getSize(obj);
      obj = undefined;
      startSampling();
      // force DRC
      for(var i:int=0;i<1000;i++)
    new Object();
      
      System.gc();
      pauseSampling();
      
      var sampleIter = getSamples();
      for each(var s:Sample in sampleIter) {
    //    trace(s);
    if(s is DeleteObjectSample && s.id == id) {
      trace(s.size == size);
    }      
      }       
    }
  }
}
 public function isGetterSetter(obj:Object, qname:QName):Boolean| 言語バージョン: | ActionScript 3.0 | 
| ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0 | 
     プロパティが get/set 関数によって定義されているかどうかを確認します。プロパティの get/set 関数に対して getInvocationCount() を使用する場合は、まず isGetterSetter() を呼び出し、それが get/set 関数であることを確認してから、getSetterInvocationCount または getGetterInvocationCount を使用してそれぞれの回数を取得します。 Flash Player デバッグ版のみ。
     
 パラメーター 
|  | obj:Object— メソッドインスタンスまたはクラスです。 | 
|  | 
|  | qname:QName— qname がundefinedの場合は、コンストラクター関数の繰り返し回数を返します。 | 
戻り値|  | Boolean— プロパティが get/set 関数によって定義されているかどうかを示すブール値です(定義されている場合はtrue、定義されていない場合はfalse)。 | 
関連する API エレメント
 例  (
                 この例の使用方法 )
            
 
 package 
{
  public function exec3() {}
  import flash.sampler.*;
  import flash.system.*;
  import flash.display.Sprite;
  import flash.utils.*;
  public class getInvocationCountTest extends Sprite
    {
      public function getInvocationCountTest()
    {
      for(var i:int=0;i<10;i++)
        exec();
      for(var i:int=0;i<10;i++)
        exec2();
      for(var i:int=0;i<10;i++)
        exec3();
      // get exec QName
      var execName:QName;
          var name:QName;
      var fooName:QName;
      for each(name in getMemberNames(this)) {
          if(name.localName == "exec")
          execName = name;
          if(name.localName == "foo")
          fooName = name;
      }
      var exec2Name:QName;
      for each(name in getMemberNames(getInvocationCountTest)) {
          if(name.localName == "exec2")
          exec2Name = name;
      }
      // execute get/set
      foo = "bar";
      trace(isGetterSetter(this, fooName));
      trace(getSetterInvocationCount(this, fooName) == 1);
      trace(getGetterInvocationCount(this, fooName) == 0);
      foo;
      
      trace(getSetterInvocationCount(getInvocationCountTest, fooName) == 1);
      trace(getGetterInvocationCount(getInvocationCountTest, fooName) == 1);
      trace(getInvocationCount(this, execName) == 10);
      trace(getInvocationCount(getInvocationCountTest, execName) == 10);
      trace(getInvocationCount(getInvocationCountTest, exec2Name) == 10);
      trace(getInvocationCount(getInvocationCountTest, undefined) == 1);
    
      getTimer();
      getTimer();
      trace(getInvocationCount(undefined, new QName("", "trace")) == 9);
      trace(getInvocationCount(undefined, new QName("flash.utils", "getTimer")) == 2);
      trace(getInvocationCount(undefined, new QName("", "exec3")) == 10);
    }
      private function exec():void {}
      private static function exec2():void {}
      private function get foo():String { return "fo"; }
      private function set foo(s:String) { }
      
    }
}
  public function pauseSampling():void| 言語バージョン: | ActionScript 3.0 | 
| ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0 | 
     サンプリング処理を一時的に停止します。startSampling() を使用してサンプリング処理を再開します。 Flash Player デバッグ版のみ。
     
関連する API エレメント
 public function sampleInternalAllocs(b:Boolean):void| 言語バージョン: | ActionScript 3.0 | 
     サンプラーに対し、Flash Player からの内部割り当てに NewObjectSamples を作成することを指示します。これを true に設定した場合、割り当てごとに NewObjectSample が生成されます。これらの内部割り当てには、型またはオブジェクトへの参照がありません。 割り当てをトリガーした ActionScript スタックトレースが保持されます。 デフォルトは false で、ActionScript オブジェクトの割り当てのみを収集します。
     
 パラメーター 
 public function setSamplerCallback(f:Function):void| 言語バージョン: | ActionScript 3.0 | 
     サンプラーのコールバック関数を設定します。この関数は、サンプルストリームがほとんど使い切られると呼び出されます。これは、サンプルバッファーが充填される前にサンプルを処理するために使用されます。 pauseSampling が呼び出された後にコールバックが呼び出され、コールバックが実行された後に startSampling が呼び出されます。
     
 パラメーター 
 public function startSampling():void| 言語バージョン: | ActionScript 3.0 | 
| ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0 | 
     メモリ使用状況 Sample オブジェクトを収集する処理を開始します。 Flash Player デバッグ版のみ。
     
関連する API エレメント
 例  (
                 この例の使用方法 )
            
 次の例では、サンプリング処理を開始し、収集したオブジェクトを繰り返し処理します。メモリプロファイラーを使用するには、Flash Player デバッグ版の 9.0.115.0 以降が必要です。
package 
{
    import flash.sampler.*
    import flash.system.*
    import flash.display.Sprite
    public class startSampling extends Sprite
    {
        public function startSampling()
        {
            flash.sampler.startSampling();
            for(var i:int=0;i<1000;i++)
                new Object()
            trace(getSampleCount() > 0)
        }
    }
}
 public function stopSampling():void| 言語バージョン: | ActionScript 3.0 | 
| ランタイムバージョン: | AIR 1.0, Flash Player 9.0.115.0 | 
     メモリ使用状況 Sample オブジェクトを収集する処理を終了し、サンプリング処理に使用されたリソースを解放します。サンプリング処理を開始するには、startSampling() を使用します。 Flash Player デバッグ版のみ。
     
関連する API エレメント
Tue Jun 12 2018, 10:51 AM Z