flash.samplerStackFrame Класс StackFrame обеспечивает доступ к свойствам блока данных, содержащего функцию.Object Класс StackFrame обеспечивает доступ к свойствам блока данных, содержащего функцию. Только для отладочной версии проигрывателя Flash Player. toString Преобразует объект StackFrame в строку, содержащую соответствующие свойства.Строка, содержащая свойство name, и, возможно, свойства file и line (если SWF-файл открыт в режиме отладки) из объекта StackFrame. Только для отладочной версии проигрывателя Flash Player. String Преобразует объект StackFrame в строку, содержащую соответствующие свойства. file Имя SWF-файла, открытого в режиме отладки.String Имя SWF-файла, открытого в режиме отладки. Только для отладочной версии проигрывателя Flash Player. line Число строк для функции в отлаживаемом SWF-файле.uint Число строк для функции в отлаживаемом SWF-файле. Только для отладочной версии проигрывателя Flash Player. name Имя функции в объекте StackFrame.String Имя функции в объекте StackFrame. Только для отладочной версии проигрывателя Flash Player. scriptID Идентификатор для функции сценария в профилируемом приложении.Number Идентификатор для функции сценария в профилируемом приложении. NewObjectSample Класс NewObjectSample воспроизводит объекты, которые были созданы в потоке getSamples().flash.sampler:Sample Класс NewObjectSample воспроизводит объекты, которые были созданы в потоке getSamples(). Только для отладочной версии проигрывателя Flash Player. В следующем примере свойства stack и time объекта Sample с именем s используются для сбора образцов памяти. Эти образцы содержат объекты NewObjectSample (массив newSamples), объекты DeleteObjectSample (массив delSamples) и объекты с образцами памяти ЦП (массив cpuSamples). Для использования профилировщика памяти необходим установленный отладочный вариант проигрывателя Flash Player версии 9.0.115.0 или более поздней. package { import flash.sampler.* import flash.system.* import flash.utils.* import flash.display.Sprite public class sampleTypes extends Sprite { var b:Boolean = true public function sampleTypes() { flash.sampler.startSampling(); for(var i:int=0;i<10000;i++) new Object(); var cpuSamples:Array=[]; var newSamples:Array=[]; var delSamples:Array=[]; var ids:Array=[] var lastTime:Number=0; for each(var s:Sample in getSamples()) { assert(s.time > 0); // positive assert(Math.floor(s.time) == s.time, s.time); // integral assert(s.time >= lastTime, s.time + ":" + lastTime); // ascending assert(s.stack == null || s.stack is Array) if(s.stack) { assert(s.stack[0] is StackFrame); assert(s.stack[0].name is String); } if(s is NewObjectSample) { var nos = NewObjectSample(s); assert(s.id > 0, s.id); assert(s.type is Class, getQualifiedClassName(s.type)); newSamples.push(s); ids[s.id] = "got one"; } else if(s is DeleteObjectSample) { var dos = DeleteObjectSample(s); delSamples.push(s); assert(ids[dos.id] == "got one"); } else if(s is Sample) cpuSamples.push(s); else { assert(false); } lastTime = s.time; } trace(b) trace(newSamples.length > 0) trace(cpuSamples.length > 0) trace(delSamples.length > 0) } private function assert(e:Boolean, mess:String=null):void { b = e && b; if(true && !e) { if(mess) trace(mess); trace(new Error().getStackTrace()); } } } } flash.sampler.getSamples()type Объект Class, соответствующий объекту, который создан в потоке getSamples().Class Объект Class, соответствующий объекту, который создан в потоке getSamples(). Только для отладочной версии проигрывателя Flash Player. object Объект NewObjectSample, если он еще существует. Объект NewObjectSample, если он еще существует. Если объект заполнен некорректными данными, это свойство не определено и существует соответствующий объект DeleteObjectSample. Только для отладочной версии проигрывателя Flash Player. flash.sampler.DeleteObjectSamplesize Размер объекта NewObjectSample.Number Размер объекта NewObjectSample. Если объект очищен в процессе сбора мусора, это свойство не определено и существует соответствующий объект DeleteObjectSample. Только для отладочной версии Flash Player. flash.sampler.DeleteObjectSampleclearSamples Удаляет текущий набор объектов Sample. Удаляет текущий набор объектов Sample. Этот метод обычно используется после вызова getSamples() и повторяется для каждого объекта Sample. Только для отладочной версии проигрывателя Flash Player. getSamples()getGetterInvocationCount Возвращает число, указывающее на то, сколько раз была выполнена функция получения.Число, указывающее на то, сколько раз был выполнен метод получения. NumberobjObjectЭкземпляр метода или класс. qnameQNameЕсли для qname задано undefined, возвращается число итераций функции конструктора. Возвращает число, указывающее на то, сколько раз была выполнена функция получения. С помощью метода isGetterSetter() можно проверить наличие функции получения/установки перед использованием метода getGetterInvocationCount(). Только для отладочной версии проигрывателя Flash Player. isGetterSetter()getInvocationCount()getInvocationCount Возвращает число, указывающее на то, сколько раз был выполнен метод.Число, указывающее на то, сколько раз был выполнен метод. NumberobjObjectЭкземпляр метода или класс. Класс можно использовать для получения счетчика вызовов функций экземпляра, когда экземпляр метода недоступен. Если для obj задано undefined, этот метод возвращает счетчик действующей на уровне пакета функции с названием qname. qnameQNameЕсли для qname задано undefined, возвращается число итераций функции конструктора. Возвращает число, указывающее на то, сколько раз был выполнен метод. Если параметр obj это класс, а для параметра qname задано undefined, то данный метод возвращает число итераций функции конструктора. Только для отладочной версии проигрывателя Flash Player. 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 Показывает лексическую область объекта Function, так что захваченные объекты области (включая объекты активации и имеющие область действия) рассматриваются профилировщиком как сохраняемые экземпляром Function.Массив, содержащий все элементы лексического диапазон ArrayobjFunctionФункция Показывает лексическую область объекта Function, так что захваченные объекты области (включая объекты активации и имеющие область действия) рассматриваются профилировщиком как сохраняемые экземпляром Function. getMasterString Возвращает главную строку, от которой зависит данная строка, или ноль если данная строка не зависит от других.Строка, от которой зависит переданная строка, или ноль, если переданная строка не зависит от других. StringstrStringСтрока Возвращает главную строку, от которой зависит данная строка, или ноль если данная строка не зависит от других. Например, если вызвать метод String.substr(), возвращенная строка на самом деле часто внедряется в исходную строку лишь как указатель с целью обеспечения быстродействия. При нормальном использовании эта сторона внедрения не видна пользователю. Однако это может вызвать недоразумение при использовании профилировщика для анализа потребления памяти программой, так как для строки может быть указано меньше памяти, чем необходимо для содержащегося в ней значения. Кроме того, строка может сохраняться в памяти лишь по той причине, что она служит главной строкой для других зависимых строк. Метод getMasterString() позволяет профилировщикам показывать пользователю точную схему зависимостей строк. getMemberNames Возвращается объект, содержащий все члены указанного объекта, включая частные члены.Объект, для которого следует выполнять итерации с помощью цикла for each..in для извлечения QNames по каждому свойству. ObjectoObjectОбъект для анализа. instanceNamesBooleanfalseЕсли объект является классом, а для instanceNames задано значение true, то имена экземпляров передаются, как если бы «o» было экземпляром класса вместо имен членов класса. Возвращается объект, содержащий все члены указанного объекта, включая частные члены. Затем можно выполнить итерации для возвращенного объекта, чтобы увидеть все значения. Этот метод сходен с методом flash.utils.describeType(), но также позволяет увидеть частных членов и пропустить промежуточный шаг создания объекта XML. Только для отладочной версии проигрывателя Flash Player. В следующем примере метод 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); } } } flash.utils.describeType()for each..ingetSampleCount Возвращает число собранных образцов.Итератор экземпляров Sample. Number Возвращает число собранных образцов. Только для отладочной версии проигрывателя Flash Player. flash.sampler.SamplegetSamples Возвращает объект с экземплярами Sample, содержащими данные об использовании памяти для последнего сеанса взятия образцов.Итератор экземпляров Sample. Object Возвращает объект с экземплярами Sample, содержащими данные об использовании памяти для последнего сеанса взятия образцов. Только для отладочной версии проигрывателя Flash Player. flash.sampler.SamplegetSavedThis Возвращает сохраненное свойство this из объекта MethodClosure, который обычно не видно в коде AS.Объект, являющийся значением свойства this для объекта MethodClosure ObjectobjFunctionЭкземпляр MethodClosure Возвращает сохраненное свойство this из объекта MethodClosure, который обычно не видно в коде AS. getSetterInvocationCount Возвращает число, указывающее на то, сколько раз была выполнена функция установки.Возвращает число, указывающее на то, сколько раз был выполнен метод установки. NumberobjObjectЭкземпляр метода или класс. qnameQNameЕсли для qname задано undefined, возвращается число итераций функции конструктора. Возвращает число, указывающее на то, сколько раз была выполнена функция установки. С помощью метода isGetterSetter() можно проверить наличие функции получения/установки перед использованием метода getSetterInvocationCount(). Только для отладочной версии проигрывателя Flash Player. isGetterSetter()getInvocationCount()getSize Возвращает размер, занимаемый указанным объектом в памяти, при использовании его в проигрывателе Flash Player 9.0.115.0 или более поздних отладочных версиях.Счетчик памяти (в байтах), использованной указанным объектом. NumberoОбъект для анализа использования памяти. Возвращает размер, занимаемый указанным объектом в памяти, при использовании его в проигрывателе Flash Player 9.0.115.0 или более поздних отладочных версиях. При использовании не с отладочной версией проигрывателя Flash Player этот метод возвращает значение 0. В следующем примере методы 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); } } } } } isGetterSetter Выполняется проверка, позволяющая увидеть, что свойство определено с помощью функции получения/установки.Логическое значение указывает на то, задано ли это свойство функцией получения/установки (true) или нет (false). BooleanobjObjectЭкземпляр метода или класс. qnameQNameЕсли для qname задано undefined, возвращается число итераций функции конструктора. Выполняется проверка, позволяющая увидеть, что свойство определено с помощью функции получения/установки. Если требуется использовать метод getInvocationCount() в отношении функции получения/установки для свойства, вначале вызовите метод isGetterSetter(), чтобы проверить, действительно ли это функция получения/установки, а затем используйте либо getSetterInvocationCount, либо getGetterInvocationCount для получения соответствующих счетчиков. Только для отладочной версии проигрывателя Flash Player. 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) { } } } getInvocationCount()getSetterInvocationCount()getGetterInvocationCount()pauseSampling Немедленно завершает обработку образцов. Немедленно завершает обработку образцов. Процесс обработки образцов повторно запускается с помощью метода startSampling(). Только для отладочной версии проигрывателя Flash Player. startSampling()sampleInternalAllocs Сообщает обработчику образцов о том, что необходимо создать объект NewObjectSamples для внутреннего распределения из Flash Player.bBoolean Сообщает обработчику образцов о том, что необходимо создать объект NewObjectSamples для внутреннего распределения из Flash Player. Если имеет значение true, то в результате каждого распределения создается объект NewObjectSample. У этих внутренних распределений нет типа, как и ссылки на объект. У них есть трассировка стека ActionScript, которая инициируется распределением. По умолчанию имеет значение false, которое собирает распределения только для объектов ActionScript. setSamplerCallback Задает для обработчика образцов функцию обратного вызова, которая будет вызываться, когда поток образцов будет почти полностью исчерпан.fFunction Задает для обработчика образцов функцию обратного вызова, которая будет вызываться, когда поток образцов будет почти полностью исчерпан. Его следует использовать для обработки образцов до заполнения буфера образцов. pauseSampling вызывается до инициации обратного вызова, а startSampling после выполнения обратного вызова. startSampling Начинается процесс сбора информации об использовании памяти в объектах Sample. Начинается процесс сбора информации об использовании памяти в объектах Sample. Только для отладочной версии проигрывателя Flash Player. В следующем примере запускается процесс сбора образцов и повторения операций для собираемых объектов. Для использования профилировщика памяти необходима установленная отладочная версия проигрывателя 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) } } } Класс SamplestopSampling Завершает процесс сбора объектов Sample с данными об использовании памяти и освобождает ресурсы, выделенные для обработки образцов. Завершает процесс сбора объектов Sample с данными об использовании памяти и освобождает ресурсы, выделенные для обработки образцов. Процесс сбора образцов запускается с помощью метода startSampling(). Только для отладочной версии проигрывателя Flash Player. Класс SampleSample В классе Sample создаются объекты, содержащие информацию с анализом памяти за определенные промежутки времени.Object В классе Sample создаются объекты, содержащие информацию с анализом памяти за определенные промежутки времени. Только для отладочной версии проигрывателя Flash Player. В следующем примере свойства stack и time объекта Sample с именем s используются для сбора образцов памяти. Эти образцы содержат объекты NewObjectSample (массив newSamples), объекты DeleteObjectSample (массив delSamples) и объекты с образцами памяти ЦП (массив cpuSamples). Для использования профилировщика памяти необходим установленный отладочный вариант проигрывателя Flash Player версии 9.0.115.0 или более поздней. package { import flash.sampler.* import flash.system.* import flash.utils.* import flash.display.Sprite public class sampleTypes extends Sprite { var b:Boolean = true public function sampleTypes() { flash.sampler.startSampling(); for(var i:int=0;i<10000;i++) new Object(); var cpuSamples:Array=[]; var newSamples:Array=[]; var delSamples:Array=[]; var ids:Array=[] var lastTime:Number=0; for each(var s:Sample in getSamples()) { assert(s.time > 0); // positive assert(Math.floor(s.time) == s.time, s.time); // integral assert(s.time >= lastTime, s.time + ":" + lastTime); // ascending assert(s.stack == null || s.stack is Array) if(s.stack) { assert(s.stack[0] is StackFrame); assert(s.stack[0].name is String); } if(s is NewObjectSample) { var nos = NewObjectSample(s); assert(s.id > 0, s.id); assert(s.type is Class, getQualifiedClassName(s.type)); newSamples.push(s); ids[s.id] = "got one"; } else if(s is DeleteObjectSample) { var dos = DeleteObjectSample(s); delSamples.push(s); assert(ids[dos.id] == "got one"); } else if(s is Sample) cpuSamples.push(s); else { assert(false); } lastTime = s.time; } trace(b) trace(newSamples.length > 0) trace(cpuSamples.length > 0) trace(delSamples.length > 0) } private function assert(e:Boolean, mess:String=null):void { b = e && b; if(true && !e) { if(mess) trace(mess); trace(new Error().getStackTrace()); } } } } flash.sampler.getSamples()stack Содержит информацию о методах, выполненных проигрывателем Flash Player за указанный период времени.Array Содержит информацию о методах, выполненных проигрывателем Flash Player за указанный период времени. Формат для отслеживания стека сходен с содержимым диалогового окна для обработки исключений в отладочной версии проигрывателя Flash Player. Только для отладочной версии проигрывателя Flash Player. time Число микросекунд, определяющее продолжительность экземпляра Sample.Number Число микросекунд, определяющее продолжительность экземпляра Sample. Только для отладочной версии проигрывателя Flash Player. DeleteObjectSample Класс DeleteObjectSample воспроизводит объекты, созданные внутри потока getSamples(); каждый объект DeleteObjectSample соответствует объекту NewObjectSample.flash.sampler:Sample Класс DeleteObjectSample воспроизводит объекты, созданные внутри потока getSamples(); каждый объект DeleteObjectSample соответствует объекту NewObjectSample. Только для отладочной версии проигрывателя Flash Player. В следующем примере свойства stack и time объекта Sample с именем s используются для сбора образцов памяти. Эти образцы содержат объекты NewObjectSample (массив newSamples), объекты DeleteObjectSample (массив delSamples) и объекты с образцами памяти ЦП (массив cpuSamples). Для использования профилировщика памяти необходим установленный отладочный вариант проигрывателя Flash Player версии 9.0.115.0 или более поздней. package { import flash.sampler.* import flash.system.* import flash.utils.* import flash.display.Sprite public class sampleTypes extends Sprite { var b:Boolean = true public function sampleTypes() { flash.sampler.startSampling(); for(var i:int=0;i<10000;i++) new Object(); var cpuSamples:Array=[]; var newSamples:Array=[]; var delSamples:Array=[]; var ids:Array=[] var lastTime:Number=0; for each(var s:Sample in getSamples()) { assert(s.time > 0); // positive assert(Math.floor(s.time) == s.time, s.time); // integral assert(s.time >= lastTime, s.time + ":" + lastTime); // ascending assert(s.stack == null || s.stack is Array) if(s.stack) { assert(s.stack[0] is StackFrame); assert(s.stack[0].name is String); } if(s is NewObjectSample) { var nos = NewObjectSample(s); assert(s.id > 0, s.id); assert(s.type is Class, getQualifiedClassName(s.type)); newSamples.push(s); ids[s.id] = "got one"; } else if(s is DeleteObjectSample) { var dos = DeleteObjectSample(s); delSamples.push(s); assert(ids[dos.id] == "got one"); } else if(s is Sample) cpuSamples.push(s); else { assert(false); } lastTime = s.time; } trace(b) trace(newSamples.length > 0) trace(cpuSamples.length > 0) trace(delSamples.length > 0) } private function assert(e:Boolean, mess:String=null):void { b = e && b; if(true && !e) { if(mess) trace(mess); trace(new Error().getStackTrace()); } } } } flash.sampler.getSamples()id Уникальный идентификационный номер, который совпадает с идентификационным номером NewObjectSample.Number Уникальный идентификационный номер, который совпадает с идентификационным номером NewObjectSample. Только для отладочной версии проигрывателя Flash Player. flash.sampler.NewObjectSample.idsize Размер объекта DeleteObjectSample перед его удалением.Number Размер объекта DeleteObjectSample перед его удалением. Только для отладочной версии проигрывателя Flash Player. flash.sampler.NewObjectSample.id