이 패키지는 Adobe Flash Builder와 함께 배포되는 프로파일링 에이전트에서 사용되며 이를 통해 프로파일링 에이전트를 사용자 정의하거나 자체적인 메모리 테스트를 구성할 수 있습니다.
startSampling()
메서드와 Flash Player 디버거 9.0.115.0 이상 버전을 사용하여 메모리 사용 샘플을 수집합니다. 그런 다음
getSamples()
메서드를 사용하여 메모리 사용 샘플을 가져옵니다. 이러한 샘플을 통해 실행 중인 응응 프로그램에서 특정 구간의 메모리 사용을 파악할 수 있습니다. 또한
flash.sampler
패키지의 다른 메서드를 사용하여 메모리 사용 정보를 분석할 수 있습니다.
참고: 사용자 정의 프로파일링 에이전트를 직접 만드는 경우 다음과 같이 mm.cfg 파일에 PreloadSwf
속성을 설정하여 에이전트 SWF 파일을 미리 로드하십시오.
PreloadSwf=C:/Documents and Settings/사용자 이름/testingagent.swf?aparam=asetting
미리 로드한 각 에이전트 SWF 파일은 고유한 보안 도메인을 가지며 프로파일링되는 메인 SWF 파일과 별도의 보안 샌드박스에서 실행됩니다. flash.sampler
패키지의 메서드를 실행하려면 에이전트 SWF 파일이 localTrusted 파일 경로에 있어야 합니다(보안 센터 참조).
공용 메서드
| 함수 | 정의 주체 |
---|
| |
Sample 객체의 현재 집합을 지웁니다. | flash.sampler |
| |
get 함수가 실행된 횟수를 반환합니다. | flash.sampler |
| |
메서드가 실행된 횟수를 반환합니다. | flash.sampler |
| |
Function의 어휘적 범위를 노출하여 캡처된 scope 객체(범위가 있는 activation 객체 포함)가 Function 인스턴스에 의해 유지되는 것으로 프로파일러에게 표시되도록 합니다. | flash.sampler |
| |
이 문자열이 종속되는 마스터 문자열을 반환하거나, 이 문자열이 다른 문자열에 종속되지 않을 경우 null을 반환합니다. | flash.sampler |
| |
전용 멤버를 비롯하여 지정된 객체의 모든 멤버를 포함하는 객체를 반환합니다. | flash.sampler |
| |
수집된 샘플의 수를 반환합니다. | flash.sampler |
| |
마지막 샘플링 세션에서 메모리 사용 Sample 인스턴스의 객체를 반환합니다. | flash.sampler |
| |
평상시에는 AS에서 볼 수 없는 메서드 클로저에서 저장된 "this"를 반환합니다. | flash.sampler |
| |
set 함수가 실행된 횟수를 반환합니다. | flash.sampler |
| |
Flash Player 9.0.115.0 이상의 디버거 버전에서 사용하는 경우 지정된 객체의 메모리 크기를 반환합니다. | flash.sampler |
| |
속성이 get/set 함수로 정의되었는지 여부를 확인합니다. | flash.sampler |
| |
일시적으로 샘플링 프로세스를 중단합니다. | flash.sampler |
| |
Flash Player의 내부 할당에 대해 NewObjectSamples를 생성해야 하는지 여부를 샘플러에 지시합니다. | flash.sampler |
| |
샘플러에 대해 콜백 함수를 설정합니다. 이 함수는 샘플 스트림이 거의 소진되면 호출됩니다. | flash.sampler |
| |
메모리 사용 Sample 객체를 수집하는 프로세스를 시작합니다. | flash.sampler |
| |
메모리 사용 Sample 객체를 수집하는 프로세스를 종료하고 샘플링 프로세스 전용 리소스를 확보합니다. | flash.sampler |
public function clearSamples():void
런타임 버전: | AIR 1.0, Flash Player 9.0.115.0 |
Sample 객체의 현재 집합을 지웁니다. 이 메서드는 일반적으로 getSamples()
를 호출하고 Sample 객체를 반복한 후 호출됩니다. Flash Player 디버거 버전 전용입니다.
관련 API 요소
public function getGetterInvocationCount(obj:Object, qname:QName):Number
런타임 버전: | AIR 1.0, Flash Player 9.0.115.0 |
get 함수가 실행된 횟수를 반환합니다. isGetterSetter()
를 사용하여 get/set 함수가 있는지 확인한 후 getGetterInvocationCount()
를 사용해야 합니다. Flash Player 디버거 버전 전용입니다.
매개 변수
| obj:Object — 메서드 인스턴스 또는 클래스입니다.
|
|
| qname:QName — qname이 undefined 인 경우 생성자 함수의 반복 수를 반환합니다.
|
반환값관련 API 요소
public function getInvocationCount(obj:Object, qname:QName):Number
런타임 버전: | AIR 1.0, Flash Player 9.0.115.0 |
메서드가 실행된 횟수를 반환합니다. obj
매개 변수가 Class이고 qname
매개 변수가 undefined
인 경우 이 메서드는 생성자 함수의 반복 수를 반환합니다. Flash Player 디버거 버전 전용입니다.
매개 변수
| obj:Object — 메서드 인스턴스 또는 클래스입니다. 메서드 인스턴스를 사용할 수 없는 경우 클래스를 사용하여 인스턴스 함수의 호출 수를 가져올 수 있습니다. obj 가 undefined 인 경우 이 메서드는 qname 으로 이름이 지정된 패키지 범위 함수 수를 반환합니다.
|
|
| qname:QName — qname이 undefined 인 경우 생성자 함수의 반복 수를 반환합니다.
|
반환값
예제 (
예제 사용 방법 )
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의 어휘적 범위를 노출하여 캡처된 scope 객체(범위가 있는 activation 객체 포함)가 Function 인스턴스에 의해 유지되는 것으로 프로파일러에게 표시되도록 합니다.
매개 변수
반환값 | Array — 모든 어휘적 범위 요소를 포함하는 배열입니다.
|
public function getMasterString(str:String):String
이 문자열이 종속되는 마스터 문자열을 반환하거나, 이 문자열이 다른 문자열에 종속되지 않을 경우 null을 반환합니다. 예를 들어 String.substr()
를 호출하는 경우 반환된 문자열은 실제로 효율성을 위해 원본 문자열에 대한 포인터로만 구현되는 경우가 많습니다. 일반적으로 이러한 세부적인 구현은 사용자에게 표시되지 않지만 프로파일러를 사용하여 프로그램의 메모리 사용을 분석하는 경우 해당 문자열을 처리하는 데 실제로 필요한 메모리 양보다 적게 사용하는 것으로 보일 수 있으므로 혼동을 줄 수 있습니다. 또한 이 문자열은 다른 문자열의 마스터 문자열이므로 메모리에 단독으로 유지될 수 있습니다. getMasterString()
을 사용하면 프로파일러가 문자열 종속성의 정확한 그래프를 사용자에게 표시할 수 있습니다.
매개 변수
반환값 | String — 전달된 문자열이 종속되는 문자열이거나, 전달된 문자열이 다른 문자열에 종속되지 않을 경우 null입니다.
|
public function getMemberNames(o:Object, instanceNames:Boolean = false):Object
런타임 버전: | AIR 1.0, Flash Player 9.0.115.0 |
전용 멤버를 비롯하여 지정된 객체의 모든 멤버를 포함하는 객체를 반환합니다. 그런 다음 반환된 객체를 반복하여 모든 값을 볼 수 있습니다. 이 메서드는 flash.utils.describeType() 메서드와 비슷하지만 전용 멤버를 보는 데 사용할 수도 있으며 XML 객체를 만드는 중간 단계를 건너뜁니다. Flash Player 디버거 버전 전용입니다.
매개 변수
| o:Object — 분석할 객체입니다.
|
|
| instanceNames:Boolean (default = false ) — 객체가 Class이고 instanceNames가 true인 경우 o가 클래스의 멤버 이름 대신에 클래스의 인스턴스인 것처럼 인스턴스 이름을 보고합니다.
|
반환값 | Object — 각 속성에 대한 QNames를 검색하기 위해 for each..in 루프를 사용하여 반복해야 하는 객체입니다.
|
관련 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
런타임 버전: | AIR 1.0, Flash Player 9.0.115.0 |
수집된 샘플의 수를 반환합니다. Flash Player 디버거 버전 전용입니다.
반환값관련 API 요소
public function getSamples():Object
런타임 버전: | AIR 1.0, Flash Player 9.0.115.0 |
마지막 샘플링 세션에서 메모리 사용 Sample 인스턴스의 객체를 반환합니다. Flash Player 디버거 버전 전용입니다.
반환값관련 API 요소
public function getSavedThis(obj:Function):Object
평상시에는 AS에서 볼 수 없는 메서드 클로저에서 저장된 "this"를 반환합니다.
매개 변수
반환값 | Object — MethodClosure의 "this"에 해당하는 객체입니다.
|
public function getSetterInvocationCount(obj:Object, qname:QName):Number
런타임 버전: | AIR 1.0, Flash Player 9.0.115.0 |
set 함수가 실행된 횟수를 반환합니다. isGetterSetter()
를 사용하여 get/set 함수가 있는지 확인한 후 getSetterInvocationCount()
를 사용해야 합니다. Flash Player 디버거 버전 전용입니다.
매개 변수
| obj:Object — 메서드 인스턴스 또는 클래스입니다.
|
|
| qname:QName — qname이 undefined 인 경우 생성자 함수의 반복 수를 반환합니다.
|
반환값관련 API 요소
public function getSize(o:*):Number
런타임 버전: | AIR 1.0, Flash Player 9.0.115.0 |
Flash Player 9.0.115.0 이상의 디버거 버전에서 사용하는 경우 지정된 객체의 메모리 크기를 반환합니다. 디버거 버전이 아닌 Flash Player에서 사용한 경우 이 메서드는 0
을 반환합니다.
매개 변수
반환값 | Number — 지정된 객체에 사용되는 메모리의 바이트 수입니다.
|
예제 (
예제 사용 방법 )
다음은
startSampling()
및
pauseSampling
을 사용하여 Sample 객체를 수집하는 예제입니다. 그런 다음
id
값과 크기를 위해 Sample 객체를 반복합니다.
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
런타임 버전: | AIR 1.0, Flash Player 9.0.115.0 |
속성이 get/set 함수로 정의되었는지 여부를 확인합니다. 속성의 get/set 함수에 대해 getInvocationCount()
를 사용하려면 우선 isGetterSetter()
를 호출하여 get/set 함수인지 여부를 확인한 다음 getSetterInvocationCount
또는 getGetterInvocationCount
를 사용하여 각 횟수를 가져옵니다. Flash Player 디버거 버전 전용입니다.
매개 변수
| obj:Object — 메서드 인스턴스 또는 클래스입니다.
|
|
| qname:QName — qname이 undefined 인 경우 생성자 함수의 반복 수를 반환합니다.
|
반환값 | Boolean — 속성이 get/set 함수로 정의되었는지(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
런타임 버전: | AIR 1.0, Flash Player 9.0.115.0 |
일시적으로 샘플링 프로세스를 중단합니다. startSampling()
을 사용하여 샘플링 프로세스를 다시 시작합니다. Flash Player 디버거 버전 전용입니다.
관련 API 요소
public function sampleInternalAllocs(b:Boolean):void
Flash Player의 내부 할당에 대해 NewObjectSamples를 생성해야 하는지 여부를 샘플러에 지시합니다. true로 설정하면 모든 할당에서 NewObjectSample을 생성합니다. 이러한 내부 할당은 객체에 대한 참조 또는 유형이 없습니다. 내부 할당에는 할당을 트리거하는 ActionScript 스택 추적이 있습니다. 기본값은 false이며 ActionScript 객체에 대한 할당만 수집합니다.
매개 변수
public function setSamplerCallback(f:Function):void
샘플러에 대해 콜백 함수를 설정합니다. 이 함수는 샘플 스트림이 거의 소진되면 호출됩니다. 이 함수는 샘플 버퍼가 채워지기 전에 샘플을 처리하는 데 사용되어야 합니다. pauseSampling은 콜백이 호출되기 전에 호출되며 startSampling은 콜백이 실행된 후에 호출됩니다.
매개 변수
public function startSampling():void
런타임 버전: | 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
런타임 버전: | 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, 03:33 PM Z