Dit pakket wordt gebruikt door de profiler-agent die bij Adobe Flash Builder wordt geleverd. U kunt het pakket gebruiken om deze profiler-agent aan te passen of om uw eigen geheugentests te maken. Gebruik de methode
startSampling()
en foutopsporingsversie 9.0.115.0 of hoger van Flash Player om voorbeelden van geheugengebruik te verzamelen. Gebruik vervolgens de methode
getSamples()
om voorbeelden van geheugengebruik op te halen. De voorbeelden geven het geheugengebruik aan bij specifieke intervallen binnen een uitgevoerde toepassing. Gebruik vervolgens de andere methoden in het pakket
flash.sampler
om de informatie met betrekking tot het geheugengebruik te analyseren.
Opmerking: wanneer u uw eigen aangepaste profiler-agent maakt, moet u het SWF-bestand voor de agent vooraf laden door de eigenschap PreloadSwf
in het mm.cfg-bestand in te stellen:
PreloadSwf=C:/Documents and Settings/gebruikersnaam/testingagent.swf?aparam=asetting
Elk vooraf geladen SWF-bestand voor de agent heeft een eigen beveiligingsdomein en wordt uitgevoerd in een aparte, andere beveiligingssandbox dan het hoofd-SWF-bestand dat wordt geprofileerd. Als u de methoden van het pakket flash.sampler
wilt uitvoeren, moet het SWF-bestand voor de agent zich in een localTrusted-bestandspad bevinden (raadpleeg het Security Center).
Openbare methoden
| Functie | Gedefinieerd door |
---|
| |
Wist de huidige set Sampleobjecten. | flash.sampler |
| |
Retourneert het aantal keren dat een functie get werd uitgevoerd. | flash.sampler |
| |
Retourneert het aantal keren dat een methode werd uitgevoerd. | flash.sampler |
| |
Toont het lexicale bereik van een Function zodat vastgelegde bereikobjecten (inclusief activeringsobjecten en objecten met bereik) door de profiler worden beschouwd als onderdeel van de instantie Function. | flash.sampler |
| |
Retourneert de hoofdtekenreeks waarvan deze tekenreeks afhankelijk is, of null als deze tekenreeks niet van een andere tekenreeks afhankelijk is. | flash.sampler |
| |
Retourneert een object dat alle leden van een opgegeven object bevat, inclusief leden van het type private. | flash.sampler |
| |
Retourneert het aantal verzamelde samples. | flash.sampler |
| |
Retourneert een object van Sample-instanties voor geheugenverbruik van de laatste samplingsessie. | flash.sampler |
| |
Retourneert het opgeslagen "this" van een methodeafsluiting, dat u normaal niet kunt zien vanuit AS. | flash.sampler |
| |
Retourneert het aantal keren dat een functie set werd uitgevoerd. | flash.sampler |
| |
Retourneert de omvang in het geheugen van een opgegeven object wanneer dit wordt gebruikt met foutopsporingsversie 9.0.115.0 of hoger van Flash Player. | flash.sampler |
| |
Controleert of een eigenschap gedefinieerd is door een functie get/set. | flash.sampler |
| |
Stopt het samplingproces tijdelijk. | flash.sampler |
| |
Vertelt de sampler of deze NewObjectSamples moet maken voor interne toewijzingen vanaf de Flash Player. | flash.sampler |
| |
Stelt een callbackfunctie voor de sampler in: deze functie wordt aangeroepen wanneer de samplestream bijna is uitgeput. | flash.sampler |
| |
Start het proces waarbij Sampleobjecten voor geheugenverbruik worden verzameld. | flash.sampler |
| |
Beëindigt het proces waarbij Sampleobjecten voor geheugenverbruik worden verzameld en bronnen voor het samplingproces worden vrijgemaakt. | flash.sampler |
public function clearSamples():void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9.0.115.0 |
Wist de huidige set Sampleobjecten. Deze methode wordt doorgaans aangeroepen na het aanroepen van getSamples()
en het doorlopen van de Sampleobjecten. Uitsluitend voor de foutopsporingsversie van Flash Player.
Verwante API-elementen
public function getGetterInvocationCount(obj:Object, qname:QName):Number
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9.0.115.0 |
Retourneert het aantal keren dat een functie get werd uitgevoerd. Gebruik isGetterSetter()
om te controleren dat u een functie get/set hebt voordat u getGetterInvocationCount()
gebruikt. Uitsluitend voor de foutopsporingsversie van Flash Player.
Parameters
| obj:Object — Een methode-instantie of een klasse.
|
|
| qname:QName — Retourneer het aantal herhalingen van de functie constructor als qname undefined is.
|
Geretourneerde waarde | Number — Het aantal keren dat een methode get werd uitgevoerd.
|
Verwante API-elementen
public function getInvocationCount(obj:Object, qname:QName):Number
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9.0.115.0 |
Retourneert het aantal keren dat een methode werd uitgevoerd. Deze methode retourneert het aantal herhalingen van de functie constructor als de parameter obj
een klasse is en de parameter qname
undefined
is. Uitsluitend voor de foutopsporingsversie van Flash Player.
Parameters
| obj:Object — Een methode-instantie of een klasse. Een klasse kan worden gebruikt om het aantal aanroepen van instantiefuncties te verkrijgen als er geen methode-instantie beschikbaar is. Deze methode retourneert het getal van de functie met pakketbereik die door qname wordt vermeld als obj undefined is.
|
|
| qname:QName — Retourneer het aantal herhalingen van de functie constructor als qname undefined is.
|
Geretourneerde waarde | Number — Het aantal keren dat een methode werd uitgevoerd.
|
Voorbeeld (
Hoe dit voorbeeld te gebruiken )
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
Toont het lexicale bereik van een Function zodat vastgelegde bereikobjecten (inclusief activeringsobjecten en objecten met bereik) door de profiler worden beschouwd als onderdeel van de instantie Function.
Parameters
Geretourneerde waarde | Array — Een array met alle elementen van het lexicale bereik
|
public function getMasterString(str:String):String
Taalversie: | ActionScript 3.0 |
Retourneert de hoofdtekenreeks waarvan deze tekenreeks afhankelijk is, of null als deze tekenreeks niet van een andere tekenreeks afhankelijk is. Als u bijvoorbeeld String.substr()
aanroept, wordt de geretourneerde tekenreeks vanuit het oogpunt van efficiëntie vaak geïmplementeerd als slechts een aanwijzer in de oorspronkelijke tekenreeks. Bij normaal gebruik is dit een implementatiedetail dat niet zichtbaar is voor de gebruiker. Er kan echter verwarring optreden wanneer u een profiler gebruikt om het geheugenverbruik van uw programma te analyseren, omdat het mogelijk is dat de tekenreeks minder geheugen lijkt te verbruiken dan nodig is voor de waarde van de tekenreeks. Bovendien kan een tekenreeks in het geheugen blijven staan uitsluitend omdat het de hoofdtekenreeks voor andere tekenreeksen is. Met getMasterString()
kunnen profilers de gebruiker een juiste weergave van tekenreeksafhankelijkheden laten zien.
Parameters
Geretourneerde waarde | String — De tekenreeks waarvan de doorgegeven tekenreeks afhankelijk is, of null als de doorgegeven tekenreeks niet van een andere tekenreeks afhankelijk is
|
public function getMemberNames(o:Object, instanceNames:Boolean = false):Object
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9.0.115.0 |
Retourneert een object dat alle leden van een opgegeven object bevat, inclusief leden van het type private. U kunt dan het geretourneerde object doorlopen om alle waarden te bekijken. Deze methode lijkt op de methode flash.utils.describeType(). Hiermee kunt u eveneens leden van het type private zien en de tussenstap van een XML-object te creëren overslaan. Uitsluitend voor de foutopsporingsversie van Flash Player.
Parameters
| o:Object — Het object dat moet worden geanalyseerd.
|
|
| instanceNames:Boolean (default = false ) — Als het object een klasse is en instanceNames true is, rapporteer dan in plaats van de namen van de klasseleden de instantienamen alsof o een instantie van een klasse is.
|
Geretourneerde waarde | Object — Een object dat u moet doorlopen met een voor elke..in -lus om de QNames voor elke eigenschap op te halen.
|
Verwante API-elementen
Voorbeeld (
Hoe dit voorbeeld te gebruiken )
In het volgende voorbeeld wordt de methode
getMemberNames()
gebruikt om een object te analyseren en de eigenschappen
buttonMode
,
filters
en
dispatchEvent
van de leden weer te geven. Als u geheugenanalyse wilt gebruiken, moet de foutopsporingsversie 9.0.115.0 of hoger van Flash Player zijn geïnstalleerd.
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
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9.0.115.0 |
Retourneert het aantal verzamelde samples. Uitsluitend voor de foutopsporingsversie van Flash Player.
Geretourneerde waarde | Number — Een iterator van Sample-instanties.
|
Verwante API-elementen
public function getSamples():Object
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9.0.115.0 |
Retourneert een object van Sample-instanties voor geheugenverbruik van de laatste samplingsessie. Uitsluitend voor de foutopsporingsversie van Flash Player.
Geretourneerde waarde | Object — Een iterator van Sample-instanties.
|
Verwante API-elementen
public function getSavedThis(obj:Function):Object
Retourneert het opgeslagen "this" van een methodeafsluiting, dat u normaal niet kunt zien vanuit AS.
Parameters
| obj:Function — Een instantie MethodClosure
|
Geretourneerde waarde | Object — Een object dat de "this" van de MethodClosure is
|
public function getSetterInvocationCount(obj:Object, qname:QName):Number
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9.0.115.0 |
Retourneert het aantal keren dat een functie set werd uitgevoerd. Gebruik isGetterSetter()
om te controleren dat u een functie get/set hebt voordat u getSetterInvocationCount()
gebruikt. Uitsluitend voor de foutopsporingsversie van Flash Player.
Parameters
| obj:Object — Een methode-instantie of een klasse.
|
|
| qname:QName — Retourneer het aantal herhalingen van de functie constructor als qname undefined is.
|
Geretourneerde waarde | Number — Het aantal keren dat een methode set werd uitgevoerd.
|
Verwante API-elementen
public function getSize(o:*):Number
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9.0.115.0 |
Retourneert de omvang in het geheugen van een opgegeven object wanneer dit wordt gebruikt met foutopsporingsversie 9.0.115.0 of hoger van Flash Player. Indien gebruikt met een andere versie dan de foutopsporingsversie van Flash Player, retourneert deze methode 0
.
Parameters
| o:* — Het object dat voor geheugenverbruik moet worden geanalyseerd.
|
Geretourneerde waarde | Number — Het aantal bytes geheugen dat door het opgegeven object wordt gebruikt.
|
Voorbeeld (
Hoe dit voorbeeld te gebruiken )
In het volgende voorbeeld worden
startSampling()
en
pauseSampling
gebruikt om Sampleobjecten te verzamelen. Vervolgens worden in dit voorbeeld de Sampleobjecten voor
id
-waarden en -grootten doorlopen. Nadat
System.gc()
wordt aangeroepen om het huidige proces te beëindigen, worden in het voorbeeld de verwijderde objecten deletedObjectSample met de oorspronkelijke
id
-waarden en -grootten vergeleken. Als u geheugenanalyse wilt gebruiken, moet de foutopsporingsversie 9.0.115.0 of hoger van Flash Player zijn geïnstalleerd.
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
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9.0.115.0 |
Controleert of een eigenschap gedefinieerd is door een functie get/set. Als u getInvocationCount()
op een functie get/set voor een eigenschap wilt gebruiken, roept u eerst isGetterSetter()
aan om te controleren of het een functie get/set is, en gebruikt u vervolgens ofwel getSetterInvocationCount
, ofwel getGetterInvocationCount
om de respectievelijke tellingen te verkrijgen. Uitsluitend voor de foutopsporingsversie van Flash Player.
Parameters
| obj:Object — Een methode-instantie of een klasse.
|
|
| qname:QName — Retourneer het aantal herhalingen van de functie constructor als qname undefined is.
|
Geretourneerde waarde | Boolean — Een booleaanse waarde die aangeeft of de eigenschap is gedefinieerd door een functie get/set (true ) of niet (false ).
|
Verwante API-elementen
Voorbeeld (
Hoe dit voorbeeld te gebruiken )
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
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9.0.115.0 |
Stopt het samplingproces tijdelijk. U kunt het samplingproces opnieuw starten met startSampling()
. Uitsluitend voor de foutopsporingsversie van Flash Player.
Verwante API-elementen
public function sampleInternalAllocs(b:Boolean):void
Taalversie: | ActionScript 3.0 |
Vertelt de sampler of deze NewObjectSamples moet maken voor interne toewijzingen vanaf de Flash Player. Bij de waarde True wordt bij elke toewijzing een NewObjectSample gegenereerd. Deze interne toewijzingen hebben geen type en ook geen verwijzing naar het Object. De toewijzingen beschikken wel over de ActionScript-stacktracering waarmee de toewijzing is geactiveerd. De standaardwaarde is False: alleen toewijzingen voor ActionScript-objecten worden verzameld.
Parameters
public function setSamplerCallback(f:Function):void
Taalversie: | ActionScript 3.0 |
Stelt een callbackfunctie voor de sampler in: deze functie wordt aangeroepen wanneer de samplestream bijna is uitgeput. Hiermee kunt u samples verwerken voordat de samplebuffer vol is. pauseSampling wordt aangeroepen voordat de callbackfunctie wordt aangeroepen; startSampling wordt aangeroepen nadat de callbackfunctie is uitgevoerd.
Parameters
public function startSampling():void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9.0.115.0 |
Start het proces waarbij Sampleobjecten voor geheugenverbruik worden verzameld. Uitsluitend voor de foutopsporingsversie van Flash Player.
Verwante API-elementen
Voorbeeld (
Hoe dit voorbeeld te gebruiken )
In het volgende voorbeeld wordt het samplingproces gestart en worden de verzamelde objecten doorlopen. Als u geheugenanalyse wilt gebruiken, hebt u de foutopsporingsversie 9.0.115.0 of hoger van Flash Player nodig.
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
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9.0.115.0 |
Beëindigt het proces waarbij Sampleobjecten voor geheugenverbruik worden verzameld en bronnen voor het samplingproces worden vrijgemaakt. U kunt het samplingproces starten met startSampling()
. Uitsluitend voor de foutopsporingsversie van Flash Player.
Verwante API-elementen
© 2015 Adobe Systems Incorporated. All rights reserved.
Wed Jun 13 2018, 11:59 AM Z