Этот пакет используется агентом профилирования, поставляемым с Adobe Flash Builder, и позволяет производить настройку агента профилирования или создавать собственные тесты использования памяти. Для сбора сведений об использовании памяти используйте метод
startSampling()
и отладочную версию Flash Player 9.0.115.0 или более позднюю. Используйте метод
getSamples()
для сбора сведений об использовании памяти. Эти сведения отражают уровень использования памяти по мере работы приложения. Для анализа собранных сведений используйте прочие методы из пакета
flash.sampler
.
Примечание. При создании собственного агента профилирования следует предварительно загрузить SWF-файл агента, путем настройки свойства PreloadSwf
в файле mm.cfg:
PreloadSwf=C:/Documents and Settings/имя_пользователя/testingagent.swf?aparam=asetting
Каждый предварительно загружаемый SWF-файл агента имеет свой собственный домен безопасности и выполняется в определенной защищенной среде отдельно от основного профилируемого SWF-файла. Чтобы задействовать методы пакета flash.sampler
, SWF-файл агента должен находиться в месте localTrusted (см. Центр безопасности).
Общедоступные методы
| Функция | Определено |
---|
| |
Удаляет текущий набор объектов Sample. | flash.sampler |
| |
Возвращает число, указывающее на то, сколько раз была выполнена функция получения. | flash.sampler |
| |
Возвращает число, указывающее на то, сколько раз был выполнен метод. | flash.sampler |
| |
Показывает лексическую область объекта Function, так что захваченные объекты области (включая объекты активации и имеющие область действия) рассматриваются профилировщиком как сохраняемые экземпляром Function. | flash.sampler |
| |
Возвращает главную строку, от которой зависит данная строка, или ноль если данная строка не зависит от других. | flash.sampler |
| |
Возвращается объект, содержащий все члены указанного объекта, включая частные члены. | flash.sampler |
| |
Возвращает число собранных образцов. | flash.sampler |
| |
Возвращает объект с экземплярами Sample, содержащими данные об использовании памяти для последнего сеанса взятия образцов. | flash.sampler |
| |
Возвращает сохраненное свойство this из объекта MethodClosure, который обычно не видно в коде AS. | flash.sampler |
| |
Возвращает число, указывающее на то, сколько раз была выполнена функция установки. | flash.sampler |
| |
Возвращает размер, занимаемый указанным объектом в памяти, при использовании его в проигрывателе Flash Player 9.0.115.0 или более поздних отладочных версиях. | flash.sampler |
| |
Выполняется проверка, позволяющая увидеть, что свойство определено с помощью функции получения/установки. | flash.sampler |
| |
Немедленно завершает обработку образцов. | flash.sampler |
| |
Сообщает обработчику образцов о том, что необходимо создать объект NewObjectSamples для внутреннего распределения из Flash Player. | 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 |
Возвращает число, указывающее на то, сколько раз была выполнена функция получения. С помощью метода isGetterSetter()
можно проверить наличие функции получения/установки перед использованием метода getGetterInvocationCount()
. Только для отладочной версии проигрывателя Flash Player.
Параметры
| obj:Object — Экземпляр метода или класс.
|
|
| qname:QName — Если для qname задано undefined , возвращается число итераций функции конструктора.
|
Возвращает | Number — Число, указывающее на то, сколько раз был выполнен метод получения.
|
Связанные элементы API
public function getInvocationCount(obj:Object, qname:QName):Number
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.115.0 |
Возвращает число, указывающее на то, сколько раз был выполнен метод. Если параметр obj
это класс, а для параметра qname
задано undefined
, то данный метод возвращает число итераций функции конструктора. Только для отладочной версии проигрывателя Flash Player.
Параметры
| obj:Object — Экземпляр метода или класс. Класс можно использовать для получения счетчика вызовов функций экземпляра, когда экземпляр метода недоступен. Если для obj задано undefined , этот метод возвращает счетчик действующей на уровне пакета функции с названием 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) { }
}
}
public function getLexicalScopes(obj:Function):Array
Показывает лексическую область объекта Function, так что захваченные объекты области (включая объекты активации и имеющие область действия) рассматриваются профилировщиком как сохраняемые экземпляром Function.
Параметры
Возвращает | Array — Массив, содержащий все элементы лексического диапазон
|
public function getMasterString(str:String):String
Язык версии: | ActionScript 3.0 |
Возвращает главную строку, от которой зависит данная строка, или ноль если данная строка не зависит от других. Например, если вызвать метод String.substr()
, возвращенная строка на самом деле часто внедряется в исходную строку лишь как указатель с целью обеспечения быстродействия. При нормальном использовании эта сторона внедрения не видна пользователю. Однако это может вызвать недоразумение при использовании профилировщика для анализа потребления памяти программой, так как для строки может быть указано меньше памяти, чем необходимо для содержащегося в ней значения. Кроме того, строка может сохраняться в памяти лишь по той причине, что она служит главной строкой для других зависимых строк. Метод getMasterString()
позволяет профилировщикам показывать пользователю точную схему зависимостей строк.
Параметры
Возвращает | String — Строка, от которой зависит переданная строка, или ноль, если переданная строка не зависит от других.
|
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 для извлечения QNames по каждому свойству.
|
Связанные элементы 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
Возвращает сохраненное свойство this из объекта MethodClosure, который обычно не видно в коде AS.
Параметры
Возвращает | Object — Объект, являющийся значением свойства this для объекта MethodClosure
|
public function getSetterInvocationCount(obj:Object, qname:QName):Number
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.115.0 |
Возвращает число, указывающее на то, сколько раз была выполнена функция установки. С помощью метода isGetterSetter()
можно проверить наличие функции получения/установки перед использованием метода getSetterInvocationCount()
. Только для отладочной версии проигрывателя Flash Player.
Параметры
| obj:Object — Экземпляр метода или класс.
|
|
| qname:QName — Если для qname задано undefined , возвращается число итераций функции конструктора.
|
Возвращает | Number — Возвращает число, указывающее на то, сколько раз был выполнен метод установки.
|
Связанные элементы 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 |
Выполняется проверка, позволяющая увидеть, что свойство определено с помощью функции получения/установки. Если требуется использовать метод getInvocationCount()
в отношении функции получения/установки для свойства, вначале вызовите метод isGetterSetter()
, чтобы проверить, действительно ли это функция получения/установки, а затем используйте либо getSetterInvocationCount
, либо getGetterInvocationCount
для получения соответствующих счетчиков. Только для отладочной версии проигрывателя Flash Player.
Параметры
| obj:Object — Экземпляр метода или класс.
|
|
| qname:QName — Если для qname задано undefined , возвращается число итераций функции конструктора.
|
Возвращает | Boolean — Логическое значение указывает на то, задано ли это свойство функцией получения/установки (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 |
Сообщает обработчику образцов о том, что необходимо создать объект NewObjectSamples для внутреннего распределения из Flash Player. Если имеет значение 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
© 2015 Adobe Systems Incorporated. All rights reserved.
Tue Jun 12 2018, 11:50 AM Z