인터넷 연결을 모니터링하고 있습니다. 사용할 수있는 서비스가 없으면 URLMonitor에서 이벤트를받습니다. 이 이벤트를 듣고 SkinnablePopUpContainer를 여는 함수를 호출합니다. 그것은 매우 간단한 컴포넌트입니다. 리스너가 붙어 있지 않으며 함수 내에 만 정의되어 있습니다. 사용자가 SkinnablePopUpContainer 내부의 버튼을 클릭하면 구성 요소를 닫고 내가 아는 모든 가능한 방법을 사용하여 구성 요소를 파괴하려고합니다. Flash Builder에서 프로파일 러 도구를 검사하면 SkinnablePopUpContainer가 여전히 존재합니다. 이 구성 요소를 파괴하여 어떻게 사용중인 메모리를 확보 할 수 있습니까? 여기 SkinnablePopUpContainer가 파손되지 않았습니다.
는 리스너 함수입니다 : 내 SkinnablePopUpContainer protected function onNoServiceAvailable(e:*):void
{
var noserviceWindow:NoInternetError = new NoInternetError();
noserviceWindow.open(this,false);
noserviceWindow.x= 0;
noserviceWindow.y= 0;
noserviceWindow.width = SharedObject.getLocal('localObj').data.appMeasures.appWidth;
noserviceWindow.height = SharedObject.getLocal('localObj').data.appMeasures.appHeight+200;
}
하고 여기
<?xml version="1.0" encoding="utf-8"?>
<s:SkinnablePopUpContainer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:nxTextInput="nx.components.extended.nxTextInput.*"
xmlns:nxButton="nx.components.extended.nxButton.*"
backgroundAlpha="0.4"
horizontalCenter="0" verticalCenter="0" width="100%" height="100%">
<fx:Script>
<![CDATA[
protected function loginButton_clickHandler(event:Event):void
{
loginButton.removeEventListener(MouseEvent.CLICK,loginButton_clickHandler);
this.close();
var ob = this;
ob = null;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Panel title="Fehler"
horizontalCenter="0" verticalCenter="0" color="white">
<s:VGroup horizontalAlign="center" verticalAlign="middle" gap="20"
height="100%" width="100%">
<s:BitmapImage source="@Embed('assets/nxInspect/mobile/assetsCI/redAssets/alert_80x80.png')" id="iconBitmpapDownOnline" verticalCenter="0" />
<s:Label id="serviceFailure" text="Keine internetverbindung." width="90%" styleName="interactable" textAlign="center" color="white"/>
<nxButton:NxButton id="loginButton" label="OK" width="100%" height="100" click="loginButton_clickHandler(event)" styleName="alert"/>
</s:VGroup>
</s:Panel>
프로파일 러 (Flash Builder에서)는 "느슨한 객체"를 표시하고 해당 객체 목록에서 각 객체의 "gc_root"가 무엇인지 확인할 수있었습니다. "gc_root"("가비지 수집 루트"또는 이와 유사한 이름)는 객체를 메모리에 고정 된 상태로 유지하는 것입니다. 지금은 사람들이 어도비 스카우트 (Adobe Scout)를 사용하고 있다고 생각합니다. 아마 비슷한 기능을 가지고있을 것입니다. –
또한 Flex 프레임 워크 (이전에는 자체)가 메모리 누수를 일으킬 수 있다는 점을주의해야합니다. b/c 프레임 워크의 일부는 객체에 대한 참조를 유지했습니다. 그 중 대부분은 지금까지 해결되었습니다 ... 귀하의 경우에는'PopupManager' 클래스 또는 팝업의 포함 된 이미지, 데이터 바인딩, 리소스 번들 사용 등을 의심 할 수 있습니다. –