Ten pakiet jest używany przez agenta optymalizacji dostarczanego razem z narzędziem Adobe Flash Builder i służy do dostosowywania działania tego agenta lub tworzenia własnych testów wykorzystania pamięci. Do pobierania próbek wykorzystania pamięci można użyć metody
startSampling()
oraz programu Flash Player z debugerem w wersji 9.0.115.0 lub nowszej. Metoda
getSamples()
umożliwia odczytywanie próbek wykorzystania pamięci. Próbki te zawierają informacje o wykorzystaniu pamięci zarejestrowane w regularnych odstępach czasu podczas działania aplikacji. Po zebraniu próbek można zastosować pozostałe metody z pakietu
flash.sampler
w celu przeanalizowania wykorzystania pamięci.
Uwaga: W przypadku utworzenia własnego agenta optymalizacji należy wstępnie załadować plik SWF agenta, ustawiając właściwość PreloadSwf
w pliku mm.cfg:
PreloadSwf=C:/Documents and Settings/username/testingagent.swf?aparam=asetting
Każdy wstępnie załadowany plik SWF agenta ma własną domenę zabezpieczeń i działa w odrębnym obszarze izolowanym, innym niż obszar izolowany optymalizowanego pliku SWF. Aby było możliwe wykonywanie metod z pakietu flash.sampler
, plik SWF agenta musi znajdować się w lokalnej zaufanej ścieżce plików (zobacz Centrum tematów pomocy).
Metody publiczne
| Funkcja | Zdefiniowane przez |
---|
| |
Usuwa aktualny zestaw obiektów Sample. | flash.sampler |
| |
Zwraca liczbę wykonań funkcji get. | flash.sampler |
| |
Zwraca liczbę wykonań metody. | flash.sampler |
| |
Wyraża zasięg leksykalny obiektu Function, aby obiekty w tym zasięgu (w tym obiekty aktywacji oraz zasięgi instrukcji with) były widoczne w programie profilującym jako zachowane przez wystąpienie klasy Function. | flash.sampler |
| |
Zwraca nadrzędny ciąg znaków, od którego zależy ten ciąg lub wartość null, jeśli ten ciąg nie zależy od żadnego innego ciągu znaków. | flash.sampler |
| |
Zwraca obiekt zawierający wszystkie elementy określonego obiektu, łącznie z elementami prywatnymi. | flash.sampler |
| |
Zwraca liczbę zgromadzonych próbek. | flash.sampler |
| |
Zwraca obiekt instancji Sample użycia pamięci z ostatniej sesji próbkowania. | flash.sampler |
| |
Zwraca zapisany obiekt "this" z zamknięcia metody (Method) — normalnie niewidoczny z poziomu kodu ActionScript. | flash.sampler |
| |
Zwraca liczbę wykonań zbioru funkcji. | flash.sampler |
| |
Zwraca wielkość określonego obiektu w pamięci, jeśli używany jest z programem Flash Player 9.0.115.0. lub późniejszą wersją z debugerem. | flash.sampler |
| |
Sprawdza, czy właściwość jest zdefiniowana przez funkcję get/set. | flash.sampler |
| |
Zatrzymuje na chwilę proces próbkowania. | flash.sampler |
| |
Informuje moduł próbkujący o tym, czy powinien utworzyć próbki NewObjectSamples dla wewnętrznych przydziałów z programu Flash Player. | flash.sampler |
| |
Ustawia funkcję wywołania zwrotnego dla modułu próbkującego — ta funkcja zostanie wywołana, gdy strumień próbek będzie niemal wyczerpany. | flash.sampler |
| |
Rozpoczyna proces gromadzenia obiektów Sample dotyczących wykorzystania pamięci. | flash.sampler |
| |
Kończy proces gromadzenia obiektów Sample dotyczących wykorzystania pamięci i zwalnia zasoby przeznaczone dla procesu próbkowania. | flash.sampler |
public function clearSamples():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0 |
Usuwa aktualny zestaw obiektów Sample. Ta metoda jest zwykle wywoływana po wywołaniu metody getSamples()
i wykonaniu iteracji dla obiektów Sample. Tylko dla wersji programu Flash Player z debugerem.
Powiązane elementy interfejsu API
public function getGetterInvocationCount(obj:Object, qname:QName):Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0 |
Zwraca liczbę wykonań funkcji get. Za pomocą metody isGetterSetter()
można określić, czy dostępna jest funkcja get/set przed użyciem metody getGetterInvocationCount()
. Tylko dla wersji programu Flash Player z debugerem.
Parametry
| obj:Object — Instancja lub klasa metody.
|
|
| qname:QName — Jeśli qname ma wartość undefined , zwrócona zostanie liczba iteracji funkcji konstruktora.
|
Zwraca | Number — Liczba wykonań metody get.
|
Powiązane elementy interfejsu API
public function getInvocationCount(obj:Object, qname:QName):Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0 |
Zwraca liczbę wykonań metody. Jeśli parametr obj
jest parametrem Class, a parametr qname
ma wartość undefined
, wówczas ta metoda zwraca liczbę iteracji funkcji konstruktora. Tylko dla wersji programu Flash Player z debugerem.
Parametry
| obj:Object — Instancja lub klasa metody. Jeśli nie jest dostępna instancja metody, w celu uzyskania liczby funkcji instancji można użyć klasy. Jeśli wartość obj jest równa undefined , ta metoda zwraca liczbę funkcji ograniczonych do pakietu, których nazwy określa qname .
|
|
| qname:QName — Jeśli właściwość qname ma wartość undefined , zwrócona zostanie liczba iteracji funkcji konstruktora.
|
Zwraca | Number — Liczba wykonań metody.
|
Przykład (
Sposób korzystania z tego przykładu )
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
Wyraża zasięg leksykalny obiektu Function, aby obiekty w tym zasięgu (w tym obiekty aktywacji oraz zasięgi słowa with) były widoczne w programie profilującym jako zachowane przez instancję Function.
Parametry
Zwraca | Array — Tablica zawierająca wszystkie elementy zakresu leksykalnego
|
public function getMasterString(str:String):String
Wersja języka: | ActionScript 3.0 |
Zwraca nadrzędny ciąg znaków, od którego zależy ten ciąg lub wartość null, jeśli ten ciąg nie zależy od żadnego innego ciągu znaków. Na przykład, jeśli wywołana zostanie metoda String.substr()
, zostanie zwrócony ciąg znaków, który z uwagi na wydajność często będzie stanowił implementację wskaźnika do oryginalnego ciągu znaków. Jest to szczegół implementacji, który przy zwykłym korzystaniu nie jest widoczny dla użytkownika; może być jednak mylący w czasie używania programu profilującego do analizy zużycia pamięci programu, ponieważ ciąg znaków może przedstawiać mniejszą wielkość w pamięci niż wielkość wymagana dla wartości ciągu znaków. Ponadto ciąg znaków może być przechowywany w pamięci wyłącznie dlatego, że jest nadrzędny w stosunku do innych ciągów znaków. Metoda getMasterString()
umożliwia programom profilującym wyświetlanie użytkownikowi dokładnego diagramu zależności ciągów znaków.
Parametry
Zwraca | String — Ciąg znaków, od którego zależy przekazany ciąg, lub wartość null, jeśli przekazany ciąg nie zależy od żadnego innego ciągu znaków
|
public function getMemberNames(o:Object, instanceNames:Boolean = false):Object
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0 |
Zwraca obiekt zawierający wszystkie elementy określonego obiektu, łącznie z elementami prywatnymi. Następnie można wykonać iteracje dla zwróconego obiektu w celu wyświetlenia wszystkich wartości. Ta metoda działa podobnie do metody flash.utils.describeType(), ale umożliwia również wyświetlanie elementów prywatnych i pomija bezpośredni krok tworzenia obiektu XML. Tylko dla wersji programu Flash Player z debugerem.
Parametry
| o:Object — Obiekt przeznaczony do analizy.
|
|
| instanceNames:Boolean (default = false ) — Jeśli obiektem jest Class, a właściwość instanceNames ma wartość true, należy zgłosić nazwy instancji w taki sposób, jakby o było instancją klasy — zamiast nazw elementów klasy.
|
Zwraca | Object — Object, dla którego należy wykonywać iteracje w pętli for each..in w celu pobrania wartości QNames dla każdej właściwości.
|
Powiązane elementy interfejsu API
Przykład (
Sposób korzystania z tego przykładu )
W poniższym przykładzie zastosowano metodę
getMemberNames()
w celu analizowania obiektu i wyświetlania właściwości
buttonMode
,
filters
i
dispatchEvent
jego elementów. W celu użycia programu profilującego pamięć wymagane jest zainstalowanie programu Flash Player w wersji 9.0.115.0 z debugerem lub w wersji późniejszej.
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
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0 |
Zwraca liczbę zgromadzonych próbek. Tylko dla wersji debugera programu Flash Player.
Zwraca | Number — Iterator instancji Sample.
|
Powiązane elementy interfejsu API
public function getSamples():Object
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0 |
Zwraca obiekt instancji Sample użycia pamięci z ostatniej sesji próbkowania. Tylko dla wersji debugera programu Flash Player.
Zwraca | Object — Iterator wystąpień klasy Sample.
|
Powiązane elementy interfejsu API
public function getSavedThis(obj:Function):Object
Zwraca zapisany obiekt "this" z zamknięcia metody (Method) — normalnie niewidoczny z poziomu kodu AS.
Parametry
Zwraca | Object — Obiekt "this" obiektu MethodClosure.
|
public function getSetterInvocationCount(obj:Object, qname:QName):Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0 |
Zwraca liczbę wykonań zbioru funkcji. Za pomocą metody isGetterSetter()
można określić, czy dostępna jest funkcja get/set przed użyciem metody getSetterInvocationCount()
. Tylko dla wersji programu Flash Player z debugerem.
Parametry
| obj:Object — Instancja lub klasa metody.
|
|
| qname:QName — Jeśli qname ma wartość undefined , zwrócona zostanie liczba iteracji funkcji konstruktora.
|
Zwraca | Number — Liczba wykonań zbioru metod.
|
Powiązane elementy interfejsu API
public function getSize(o:*):Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0 |
Zwraca wielkość określonego obiektu w pamięci, jeśli używany jest z programem Flash Player 9.0.115.0. lub późniejszą wersją z debugerem. Jeśli używany jest z programem Flash Player, który nie zawiera debugera, ta metoda zwraca 0
.
Parametry
| o:* — Obiekt przeznaczony do analizowania wykorzystania pamięci.
|
Zwraca | Number — Liczba bajtów pamięci używana przez określony obiekt.
|
Przykład (
Sposób korzystania z tego przykładu )
W poniższym przykładzie przedstawiono użycie metod
startSampling()
i
pauseSampling
w celu gromadzenia obiektów Sample. Następnie w przykładzie wykonywane są iteracje dla obiektów Sample dla wartości
id
i rozmiarów. Po wywołaniu metody
System.gc()
w celu zatrzymania bieżącego procesu (w przykładzie) wykonywane jest porównanie obiektów deletedObjectSample z oryginalnymi wartościami
id
oraz wyświetlane są ich wielkości. W celu użycia programu profilującego pamięć wymagane jest zainstalowanie programu Flash Player 9.0.115.0 w wersji z debugerem lub w wersji późniejszej.
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
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0 |
Sprawdza, czy właściwość jest zdefiniowana przez funkcję get/set. Jeśli użytkownik chce użyć metody getInvocationCount()
w funkcji get/set dla właściwości, najpierw należy wywołać metodę isGetterSetter()
w celu sprawdzenia, czy jest to funkcja get/set — następnie należy użyć metody getSetterInvocationCount
lub getGetterInvocationCount
w celu uzyskania odpowiednich liczb. Tylko dla wersji programu Flash Player z debugerem.
Parametry
| obj:Object — Instancja lub klasa metody.
|
|
| qname:QName — Jeśli qname ma wartość undefined , zwrócona zostanie liczba iteracji funkcji konstruktora.
|
Zwraca | Boolean — Wartość typu Boolean, która wskazuje, czy właściwość jest zdefiniowana przez funkcję get/set (true ) czy nie jest (false ).
|
Powiązane elementy interfejsu API
Przykład (
Sposób korzystania z tego przykładu )
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
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0 |
Zatrzymuje na chwilę proces próbkowania. Za pomocą metody startSampling()
można zrestartować proces próbkowania. Tylko dla wersji programu Flash Player z debugerem.
Powiązane elementy interfejsu API
public function sampleInternalAllocs(b:Boolean):void
Wersja języka: | ActionScript 3.0 |
Informuje moduł próbkujący o tym, czy powinien utworzyć próbki NewObjectSamples dla wewnętrznych przydziałów z programu Flash Player. Jeśli ustawiona jest wartość true, wówczas każdy przydział wygeneruje obiekt NewObjectSample. Te wewnętrzne przydziały nie będą miały typu i nie będą odwoływać się do obiektu Object. Będą zawierały stos wywołań ActionScript, który wywołał przydzielanie. Domyślnym ustawieniem jest false, co powoduje gromadzenie przydziałów tylko dla obiektów ActionScript.
Parametry
public function setSamplerCallback(f:Function):void
Wersja języka: | ActionScript 3.0 |
Ustawia funkcję wywołania zwrotnego dla modułu próbkującego — ta funkcja zostanie wywołana, gdy strumień próbek będzie niemal wyczerpany. Ta funkcja powinna być używana do przetwarzania próbek zanim dojdzie do zapełnienia buforu próbek. Metoda pauseSampling zostanie wywołana przed wywołaniem zwrotnym, a metoda startSampling zostanie wywołana po wykonaniu wywołania zwrotnego.
Parametry
public function startSampling():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0 |
Rozpoczyna proces gromadzenia obiektów Sample dotyczących wykorzystania pamięci. Tylko dla wersji programu Flash Player z debugerem.
Powiązane elementy interfejsu API
Przykład (
Sposób korzystania z tego przykładu )
W poniższym przykładzie inicjowany jest proces próbkowania i wykonywane są iteracje dla zgromadzonych obiektów. W celu użycia programu profilującego pamięć wymagany jest program Flash Player 9.0.115.0 w wersji z debugerem lub w wersji późniejszej.
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
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0 |
Kończy proces gromadzenia obiektów Sample dotyczących wykorzystania pamięci i zwalnia zasoby przeznaczone dla procesu próbkowania. Proces próbkowania można rozpocząć za pomocą metody startSampling()
. Tylko dla wersji programu Flash Player z debugerem.
Powiązane elementy interfejsu API
© 2015 Adobe Systems Incorporated. All rights reserved.
Tue Jun 12 2018, 12:22 PM Z