2012-12-20 5 views
3

Robotlegs를 매우 고맙게 생각하지만 최근에는 GC 문제가 발생했습니다. 나는 참조 null을 설정하여 컨텍스트 개체를 처리하지 못했습니다. FB 프로필 도구의 도움으로 컨텍스트 개체가 "GC 루트"인 것으로 나타납니다. GC로 배치 될 I이 클래스를 실행할 때컨텍스트가 GCRoot가되는 이유는 무엇입니까?

public class MemoryLeak extends Sprite{ 
    public function MemoryLeak() 
    { 
     makeAndDrop(); 
    } 

    public function makeAndDrop():void{ 
     var _context = new Context(this); 
     _context = null; 
    } 
} 

는 그것을 희망 : 를 알아낼, I는 unreachable.Here이 클래스의 본문 인 컨텍스트 (OBJ)를 생성하는 간단한 클래스를 wirte하고 떠나 , 그러나 그것은 작동하지 않았다. (대부분의 시간이 아니라 매번). 프로필 도구는이 인스턴스가 GCRoot임을 보여줍니다. 나는 GC에 관한 기사를 읽었지만 GCRoot 자체에 대해서는 언급하지 않았다. 아무도 왜 저에게 말하고 당신을 순전히 말할 수 있 었는가!

추신 : makeAndDrop() 후에 System.gc()를 두 번 호출하려고했지만 작동하지 않았습니다. 사실, 나는 "GCRoot is"문제 (fb 프로파일에 의해 암시 됨)에 더 관심이 있습니다. 당신이 그것에 대해 말해 준다면 더 많은 도움이 될 것입니다.

+0

GC는 항상 실행되지 않으며 (예 : 충분한 여유 메모리가있는 경우) RL은 GC에도 영향을 줄 수있는 약한 수신기를 사용합니다. –

+0

이 컨텍스트가 모듈로로드 되었습니까? 왜냐하면 GCRoot로 표시되는 또 다른 이유를 볼 수 없기 때문입니다. 어쨌든 가끔씩 발표되고 때때로 그렇지 않은 이유는 자동 가비지 수집과 관련이 있습니다. 앱에 충분한 여유 메모리가 남아 있으면 객체가 오래 동안 메모리에 남아있을 수 있습니다. – Creynders

+0

http://stackoverflow.com/questions/14000712/why-is-it-a-bug-of-flash-builder-or-something – ForbetterCoder

답변

0

컨텍스트가 아마도 listen에서 this이 될 것이라고 생각하여 추가 된 하위에 종속성 주입을 수행하거나 중재자를 만들 수 있습니다. 하나는 청취자가 중재자 Map 또는 viewMap과 대화 할 때까지 첨부되지 않기를 바랄 것입니다. 그러나 RL 작성자는 일정 기간 동안 View에서 컨텍스트를 원할 때 유스 케이스를 고려하지 않을 것 같습니다. 뷰의 실제 수명보다 짧습니다.

관련 문제