用于 Adobe® Flash® Platform 的 ActionScript® 3.0 参考
主页  |  隐藏包列表和类列表 |   |   |  新增内容  |  索引  |  附录  |  为什么显示为英语?
过滤条件: 正在从服务器检索数据...
正在从服务器检索数据...
 

包 flash.sampler 


此包由与 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
  
显示 Function 的词汇范围,以使捕获范围的对象(包括激活对象以及范围内对象)在被 Function 实例保留时对于分析器可见。
flash.sampler
  
返回此字符串所关联的主字符串,或者如果此字符串不与其他字符串关联,则返回 null。
flash.sampler
  
getMemberNames(o:Object, instanceNames:Boolean = false):Object
返回一个对象,其中包含指定对象的所有成员(包括私有成员)。
flash.sampler
  
返回收集的样本数。
flash.sampler
  
从上次采样会话中返回内存使用 Sample 实例的对象。
flash.sampler
  
从 closure 方法返回保存的“this”,通常无法从 AS 看到。
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
函数详细信息

clearSamples

()函数
public function clearSamples():void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9.0.115.0

清除当前的 Sample 对象集合。通常在调用 getSamples() 并遍历 Sample 对象后调用此方法。仅适用于 Flash Player 调试器版。

相关 API 元素

getGetterInvocationCount

()函数 
public function getGetterInvocationCount(obj:Object, qname:QName):Number

语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9.0.115.0

返回 get 函数的执行次数。在使用 getGetterInvocationCount() 之前使用 isGetterSetter() 验证是否具有 get/set 函数。仅适用于 Flash Player 调试器版。

参数

obj:Object — 方法实例或类。
 
qname:QName — 如果 qname 为 undefined,则返回构造函数的迭代次数。

返回
Number — get 函数的执行次数。

相关 API 元素

getInvocationCount

()函数 
public function getInvocationCount(obj:Object, qname:QName):Number

语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9.0.115.0

返回方法的执行次数。如果参数 obj 为类并且参数 qnameundefined,则此方法返回构造函数的迭代次数。仅适用于 Flash Player 调试器版。

参数

obj:Object — 方法实例或类。在方法实例不可用时,可以使用类来获取实例函数的调用计数。如果 objundefined,则此方法返回由 qname 命名的范围限于包的函数计数。
 
qname:QName — 如果 qname 为 undefined,则返回构造函数的迭代次数。

返回
Number — 方法的执行次数。

示例  ( 如何使用本示例 )

 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) { }
      
    }
}

getLexicalScopes

()函数 
public function getLexicalScopes(obj:Function):Array

显示 Function 的词汇范围,以使捕获范围的对象(包括激活对象以及范围内对象)在被 Function 实例保留时对于分析器可见。

参数

obj:Function — 一个函数

返回
Array — 包含所有词汇范围元素的数组

getMasterString

()函数 
public function getMasterString(str:String):String

语言版本: ActionScript 3.0

返回此字符串所关联的主字符串,或者如果此字符串不与其他字符串关联,则返回 null。例如,如果调用 String.substr(),出于效率考虑,返回的字符串常常仅作为一个指针,实际实现到原始字符串中。通常使用过程中,这些实现细节对于用户是不可见的;但是,在使用分析器分析程序的内存占用时,可能会出现令人困惑的情形,因为此字符串可能显示为所占用的内存比字符串值所需要的内存要少。此外,字符串可能单独保存在内存中,因为它是其他字符串的主字符串。getMasterString() 可使分析器向用户显示字符串相关性的准确图表。

参数

str:String — 字符串

返回
String — 传入字符串所关联的字符串,或者如果传入字符串不与其他字符串关联,则为 null。

getMemberNames

()函数 
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) — 如果对象是类并且 instanceNames 为 true,则将 o 视为类的实例来报告实例名称而不是类的成员名称。

返回
Object — 一个对象,必须使用 for each..in 循环进行遍历以检索每个属性的 QName。

相关 API 元素


示例  ( 如何使用本示例 )

以下示例使用 getMemberNames() 方法分析对象并显示其成员的 buttonModefiltersdispatchEvent 属性。为了使用内存设置,需要安装 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);

    }
    }
}

getSampleCount

()函数 
public function getSampleCount():Number

语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9.0.115.0

返回收集的样本数。仅适用于 Flash Player 调试器版。

返回
Number — Sample 实例的迭代器。

相关 API 元素

getSamples

()函数 
public function getSamples():Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9.0.115.0

从上次采样会话中返回内存使用 Sample 实例的对象。仅适用于 Flash Player 调试器版。

返回
Object — Sample 实例的迭代器。

相关 API 元素

getSavedThis

()函数 
public function getSavedThis(obj:Function):Object

从 closure 方法返回保存的“this”,通常无法从 AS 看到。

参数

obj:Function — 一个 MethodClosure 实例

返回
Object — MethodClosure 的“this”对象

getSetterInvocationCount

()函数 
public function getSetterInvocationCount(obj:Object, qname:QName):Number

语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9.0.115.0

返回 set 函数的执行次数。在使用 getSetterInvocationCount() 之前使用 isGetterSetter() 验证是否具有 get/set 函数。仅适用于 Flash Player 调试器版。

参数

obj:Object — 方法实例或类。
 
qname:QName — 如果 qname 为 undefined,则返回构造函数的迭代次数。

返回
Number — set 方法的执行次数。

相关 API 元素

getSize

()函数 
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 对象。然后,示例针对 id 值和大小遍历 Sample 对象。在调用 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);
    }      
      }       

    }
  }
}

isGetterSetter

()函数 
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 函数,然后使用 getSetterInvocationCountgetGetterInvocationCount 来获取各自的计数。仅适用于 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) { }
      
    }
}

pauseSampling

()函数 
public function pauseSampling():void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9.0.115.0

立即停止采样过程。使用 startSampling() 重新启动采样过程。仅适用于 Flash Player 调试器版。

相关 API 元素

sampleInternalAllocs

()函数 
public function sampleInternalAllocs(b:Boolean):void

语言版本: ActionScript 3.0

如果应该为来自 Flash Player 的内部分配创建 NewObjectSamples,则告知取样器。如果设置为 true,则各个分配都将生成一个 NewObjectSample。这些内部分配将不包含类型或对对象的引用。它们将包含触发分配的 ActionScript 堆栈。默认值为 false,这将只收集对 ActionScript 对象的分配。

参数

b:Boolean

setSamplerCallback

()函数 
public function setSamplerCallback(f:Function):void

语言版本: ActionScript 3.0

为取样器设置回调函数 - 在示例流将要用尽时调用此函数。这应用于在填充样本缓冲区之前处理样本。将在调用回调之前调用 pauseSampling 并在执行回调之后调用 startSampling。

参数

f:Function

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)
        }
    }
}

stopSampling

()函数 
public function stopSampling():void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9.0.115.0

结束收集内存使用 Sample 对象的过程,并释放采样过程的专用资源。使用 startSampling() 启动采样过程。仅适用于 Flash Player 调试器版。

相关 API 元素

[ X ]为什么显示为英语?
《ActionScript 3.0 参考》中的内容以英语显示

《ActionScript 3.0 参考》中的部分内容未翻译成所有语言。当某个语言元素未翻译时,将显示为英语。例如,ga.controls.HelpBox 类未翻译成任何语言。因此在简体中文版的参考中,ga.controls.HelpBox 类显示为英语。