Der zusammen mit Adobe Flash Builder bereitgestellte Profilierungsagent arbeitet mit diesem Paket. Dieses Paket ermöglicht es Ihnen, den Profilierungsagenten anzupassen und eigene Speichertests zu erstellen. Sammeln Sie mit der
startSampling()
-Methode und der Flash Player Debugger-Version 9.0.115.0 oder höher Beispiele der Speichernutzung. Rufen Sie die Beispiele der Speichernutzung mit der
getSamples()
-Methode auf. Die Beispiele zeigen die Speichernutzung in bestimmten Intervallen einer laufenden Anwendung. Mithilfe der anderen Methoden im
flash.sampler
-Paket können Sie die Speichernutzungsinformationen analysieren.
Hinweis: Wenn Sie einen eigenen Profilierungsagenten erstellen, laden Sie die Agent-SWF-Datei im Voraus, indem Sie die PreloadSwf
-Eigenschaft in der mm.cfg-Datei einstellen:
PreloadSwf=C:/Documents and Settings/username/testingagent.swf?aparam=asetting
Jede im Voraus geladene Agent-SWF-Datei weist ihre eigene Sicherheitsdomäne auf und wird in einer anderen Sicherheits-Sandbox als die profilierte Haupt-SWF-Datei ausgeführt. Um die im flash.sampler
-Paket enthaltenen Methoden ausführen zu können, muss sich die SWF-Datei in einem als „localTrusted“ klassifizierten Dateipfad befinden (weitere Informationen finden Sie im Security Center).
Öffentliche Methoden
| Funktion | Definiert von |
---|
| |
Löscht den aktuellen Satz von Sample-Objekten. | flash.sampler |
| |
Gibt die Anzahl der Ausführungen einer get-Funktion zurück. | flash.sampler |
| |
Gibt die Anzahl der Ausführungen der Methode zurück. | flash.sampler |
| |
Gibt den lexikalischen Umfang einer Funktion an, sodass erfasste scope-Objekte (einschließlich activation-Objekte und mit Umfang) vom Profiler als von der Function-Instanz zurückgehalten erkannt werden. | flash.sampler |
| |
Gibt den Master-String zurück, von dem dieser String abhängig ist, oder null, wenn dieser String von keinem anderen String abhängig ist. | flash.sampler |
| |
Gibt ein Objekt zurück, das alle Mitglieder eines angegebenen Objekts einschließlich privater Mitglieder enthält. | flash.sampler |
| |
Gibt die Anzahl der gesammelten Samples zurück. | flash.sampler |
| |
Gibt ein Objekt von Speichernutzungs-Sample-Instanzen aus der letzten Sampling-Sitzung zurück. | flash.sampler |
| |
Gibt das gespeicherte "this" von einem Methodenabschluss zurück, das sie normalerweise nicht in AS sehen können. | flash.sampler |
| |
Gibt die Anzahl der Ausführungen einer set-Funktion zurück. | flash.sampler |
| |
Gibt die Größe eines angegebenen Objekts im Speicher zurück, wenn die Debugger-Version von Flash Player 9.0.115.0 oder höher verwendet wird. | flash.sampler |
| |
Überprüft, ob eine Eigenschaft durch eine get/set-Funktion definiert wird. | flash.sampler |
| |
Beendet den Sammelvorgang vorübergehend. | flash.sampler |
| |
Teilt dem Sampler mit, ob NewObjectSamples für interne Zuordnungen aus dem Flash Player erstellt werden sollen. | flash.sampler |
| |
Legt eine Rückruffunktion für den Sampler fest - diese Funktion wird aufgerufen, wenn der Samplestream beinahe leer ist. | flash.sampler |
| |
Beginnt mit dem Sammeln von Speichernutzungs-Sample-Objekten. | flash.sampler |
| |
Beendet das Sammeln von Speichernutzungs-Sample-Objekten und macht Ressourcen frei, die für das Sammeln verwendet wurden. | flash.sampler |
public function clearSamples():void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9.0.115.0 |
Löscht den aktuellen Satz von Sample-Objekten. Diese Methode wird normalerweise aufgerufen, nachdem getSamples()
aufgerufen wurde und die Sample-Objekte durchlaufen hat. Nur für Flash Player-Debugger-Version.
Verwandte API-Elemente
public function getGetterInvocationCount(obj:Object, qname:QName):Number
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9.0.115.0 |
Gibt die Anzahl der Ausführungen einer get-Funktion zurück. Überprüfen Sie mit isGetterSetter()
, dass Sie über eine get/set-Funktion verfügen, bevor Sie getGetterInvocationCount()
verwenden. Nur für Flash Player-Debugger-Version.
Parameter
| obj:Object — Eine Methodeninstanz oder eine Klasse.
|
|
| qname:QName — Wenn qname den Wert undefined aufweist, wird die Anzahl der Iterationen der Konstruktorfunktion zurückgegeben.
|
Rückgabewerte | Number — Die Anzahl der Ausführungen einer get-Methode.
|
Verwandte API-Elemente
public function getInvocationCount(obj:Object, qname:QName):Number
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9.0.115.0 |
Gibt die Anzahl der Ausführungen der Methode zurück. Wenn der obj
-Parameter eine Klasse ist und der qname
-Parameter den Wert undefined
hat, gibt diese Methode die Anzahl der Iterationen der Konstruktorfunktion zurück. Nur für Flash Player-Debugger-Version.
Parameter
| obj:Object — Eine Methodeninstanz oder eine Klasse. Wenn keine Methodeninstanz verfügbar ist, kann die Anzahl der Aufrufe von Instanzfunktionen mithilfe einer Klasse abgerufen werden. Wenn obj den Wert undefined hat, gibt diese Methode die Anzahl der für das Paket gültigen Funktion zurück, die von qname benannt wird.
|
|
| qname:QName — Wenn qname den Wert undefined aufweist, wird die Anzahl der Iterationen der Konstruktorfunktion zurückgegeben.
|
Rückgabewerte | Number — Die Anzahl der Ausführungen der Methode.
|
Beispiel (
Verwendung dieses Beispiels )
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
Gibt den lexikalischen Umfang einer Funktion an, sodass erfasste scope-Objekte (einschließlich activation-Objekte und mit Umfang) vom Profiler als von der Function-Instanz zurückgehalten erkannt werden.
Parameter
Rückgabewerte | Array — Ein Array, das alle Elemente des lexikalischen Umfangs enthält
|
public function getMasterString(str:String):String
Sprachversion: | ActionScript 3.0 |
Gibt den Master-String zurück, von dem dieser String abhängig ist, oder null, wenn dieser String von keinem anderen String abhängig ist. Wenn Sie zum Beispiel String.substr()
aufrufen, wird der zurückgegebene String aus Effizienzgründen oft nur als Verweis in den Originalstring implementiert. Im normalen Einsatz ist dies ein Implementierungsdetail, das vom Benutzer nicht bemerkt wird. Es kann jedoch verwirrend sein, wenn ein Profiler zur Analyse der Speichernutzung Ihres Programms verwendet wird, da der String möglicherweise laut Anzeige weniger Speicher benötigt als tatsächlich für den Wert des Strings erforderlich. Des Weiteren kann ein String allein deshalb im Speicher verbleiben, weil er als Master für andere Strings fungiert. Mit getMasterString()
können Profiler dem Benutzer ein genaues Diagramm der Stringabhängigkeiten anzeigen.
Parameter
Rückgabewerte | String — Der String, von dem der übergebene String abhängig ist, oder null, wenn der übergebene String von keinem anderen String abhängig ist
|
public function getMemberNames(o:Object, instanceNames:Boolean = false):Object
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9.0.115.0 |
Gibt ein Objekt zurück, das alle Mitglieder eines angegebenen Objekts einschließlich privater Mitglieder enthält. Sie können das zurückgegebene Objekt dann durchlaufen, um alle Werte zu sehen. Diese Methode ähnelt der flash.utils.describeType()-Methode, ermöglicht Ihnen jedoch auch, private Member zu sehen und überspringt den Zwischenschritt der XML-Objekterstellung. Nur für Flash Player-Debugger-Version.
Parameter
| o:Object — Das zu analysierende Objekt.
|
|
| instanceNames:Boolean (default = false ) — Wenn das Objekt eine Klasse ist und instanceNames den Wert „true“ hat, melden Sie anstatt der Namen der Klassenmitglieder die Instanznamen, als ob das Objekt eine Instanz der Klasse wäre.
|
Rückgabewerte | Object — Ein Objekt, das Sie mit einer for each..in -Schleife durchlaufen müssen, um die QNames für jede Eigenschaft zu erhalten.
|
Verwandte API-Elemente
Beispiel (
Verwendung dieses Beispiels )
Das folgende Beispiel verwendet die
getMemberNames()
-Methode, um ein Objekt zu analysieren und die
buttonMode
-,
filters
- und
dispatchEvent
-Eigenschaft ihrer Mitglieder anzuzeigen. Um den Speicherprofiler zu verwenden, muss die Flash Player-Debugger-Version 9.0.115.0 oder höher installiert sein.
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
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9.0.115.0 |
Gibt die Anzahl der gesammelten Samples zurück. Nur für Flash Player-Debugger-Version.
Rückgabewerte | Number — Ein Iterator von Sample-Instanzen.
|
Verwandte API-Elemente
public function getSamples():Object
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9.0.115.0 |
Gibt ein Objekt von Speichernutzungs-Sample-Instanzen aus der letzten Sampling-Sitzung zurück. Nur für Flash Player-Debugger-Version.
Rückgabewerte | Object — Ein Iterator von Sample-Instanzen.
|
Verwandte API-Elemente
public function getSavedThis(obj:Function):Object
Gibt das gespeicherte "this" von einem Methodenabschluss zurück, das sie normalerweise nicht in AS sehen können.
Parameter
| obj:Function — Eine MethodClosure-Instanz
|
Rückgabewerte | Object — Ein Objekt, das das "this" der MethodClosure ist
|
public function getSetterInvocationCount(obj:Object, qname:QName):Number
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9.0.115.0 |
Gibt die Anzahl der Ausführungen einer set-Funktion zurück. Überprüfen Sie mit isGetterSetter()
, dass Sie über eine get/set-Funktion verfügen, bevor Sie getSetterInvocationCount()
verwenden. Nur für Flash Player-Debugger-Version.
Parameter
| obj:Object — Eine Methodeninstanz oder eine Klasse.
|
|
| qname:QName — Wenn qname den Wert undefined aufweist, wird die Anzahl der Iterationen der Konstruktorfunktion zurückgegeben.
|
Rückgabewerte | Number — Die Anzahl der Ausführungen einer set-Methode.
|
Verwandte API-Elemente
public function getSize(o:*):Number
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9.0.115.0 |
Gibt die Größe eines angegebenen Objekts im Speicher zurück, wenn die Debugger-Version von Flash Player 9.0.115.0 oder höher verwendet wird. Wenn diese Methode mit einer anderen Flash Player-Version als der Debugger-Version verwendet wird, gibt sie 0
zurück.
Parameter
| o:* — Das für die Speichernutzung zu analysierende Objekt.
|
Rückgabewerte | Number — Die Bytezählung des vom angegebenen Objekt verwendeten Speichers.
|
Beispiel (
Verwendung dieses Beispiels )
Im folgenden Beispiel werden
startSampling()
und
pauseSampling
verwendet, um Sample-Objekte zu sammeln. Dann werden die Sample-Objekte nach
id
-Werten und Größen durchlaufen. Nach dem Aufruf von
System.gc()
zum Stoppen des aktuellen Prozesses werden die deletedObjectSample-Objekte mit den ursprünglichen
id
-Werten verglichen und ihre Größe wird angezeigt. Um den Speicherprofiler zu verwenden, muss die Flash Player-Debugger-Version 9.0.115.0 oder höher installiert sein.
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
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9.0.115.0 |
Überprüft, ob eine Eigenschaft durch eine get/set-Funktion definiert wird. Wenn Sie getInvocationCount()
mit einer get/set-Funktion für eine Eigenschaft verwenden möchten, rufen Sie zuerst isGetterSetter()
auf, um zu überprüfen, ob es sich um eine get/set-Funktion handelt, und rufen Sie die entsprechende Anzahl dann mit getSetterInvocationCount
oder getGetterInvocationCount
ab. Nur für Flash Player-Debugger-Version.
Parameter
| obj:Object — Eine Methodeninstanz oder eine Klasse.
|
|
| qname:QName — Wenn qname den Wert undefined aufweist, wird die Anzahl der Iterationen der Konstruktorfunktion zurückgegeben.
|
Rückgabewerte | Boolean — Ein boolescher Wert, der angibt, ob die Eigenschaft durch eine get/set-Funktion definiert wird (true ) oder nicht (false ).
|
Verwandte API-Elemente
Beispiel (
Verwendung dieses Beispiels )
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
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9.0.115.0 |
Beendet den Sammelvorgang vorübergehend. Starten Sie den Sampling-Prozess mit startSampling()
neu. Nur für Flash Player-Debugger-Version.
Verwandte API-Elemente
public function sampleInternalAllocs(b:Boolean):void
Sprachversion: | ActionScript 3.0 |
Teilt dem Sampler mit, ob NewObjectSamples für interne Zuordnungen aus dem Flash Player erstellt werden sollen. Wenn hierfür der Wert „true“ eingestellt wird, generiert jede Zuordnung ein NewObjectSample. Diese internen Zuordnungen haben keinen Typ oder einen Verweis auf das Objekt. Sie haben den ActionScript-Stacktrace, der die Zuordnung ausgelöst hat. Der Standardwert ist „false“, wodurch nur Zuordnungen für ActionScript-Objekte gesammelt werden.
Parameter
public function setSamplerCallback(f:Function):void
Sprachversion: | ActionScript 3.0 |
Legt eine Rückruffunktion für den Sampler fest - diese Funktion wird aufgerufen, wenn der Samplestream beinahe leer ist. Diese sollte verwendet werden, um Samples zu verarbeiten, bevor der Samplepuffer voll ist. pauseSampling wird aufgerufen, bevor der Rückruf aufgerufen wird, und startSampling wird aufgerufen, bevor der Rückruf ausgeführt wurde.
Parameter
public function startSampling():void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9.0.115.0 |
Beginnt mit dem Sammeln von Speichernutzungs-Sample-Objekten. Nur für Flash Player-Debugger-Version.
Verwandte API-Elemente
Beispiel (
Verwendung dieses Beispiels )
Im folgenden Beispiel wird der Sampling-Prozess eingeleitet und durchläuft die gesammelten Objekte. Um den Speicherprofiler zu verwenden, muss die Flash Player-Debugger-Version 9.0.115.0 oder höher installiert sein.
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
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9.0.115.0 |
Beendet das Sammeln von Speichernutzungs-Sample-Objekten und macht Ressourcen frei, die für das Sammeln verwendet wurden. Sie starten den Sampling-Prozess mit startSampling()
. Nur für Flash Player-Debugger-Version.
Verwandte API-Elemente
© 2015 Adobe Systems Incorporated. All rights reserved.
Tue Jun 12 2018, 10:19 AM Z