2013-10-16 2 views
0

안드로이드 응용 프로그램에서 장치 카메라를 처리하고 있습니다. 코드에서 onPreviewFrame 함수는 영원히 반복되고 모든 signle 루프에서 YuvImage의 새 인스턴스를 만듭니다. 마지막으로 루프에서 인스턴스가 null로 설정되므로 시스템 가비지 수집기가 할당 된 메모리를 해제 할 수 있습니다.안드로이드에서 가비지 수집 3.2

이것은 Android 4.1에서는 완벽하게 작동하지만 3.2에서는 그렇지 않습니다. 안드로이드 3.2 os 에서이 응용 프로그램은 더 많은 메모리를 할당하고 마지막으로 메모리가 부족합니다.

무엇이 잘못 되었나요?

oPreview.oCamera.setPreviewCallbackWithBuffer(new Camera.PreviewCallback() 
{ 
    public synchronized void onPreviewFrame(byte[] bData, Camera oCamera) 
    { 
     ... 
     YuvImage oYuv_image = new YuvImage(bData, iFormat, iW, iH, null); 
     ... 
     oYuv_image = null; 
    } 
} 
+1

로컬 인스턴스이므로 'null'로 설정하지 않아도됩니다. 전체 루프를 보여 주시겠습니까? – m0skit0

+0

감사합니다. 문제 해결됨. – Veijo

+0

문제를 해결 한 경우 답변을 게시하는 것이 좋습니다. – m0skit0

답변

0

"Memory Analizer"라는 Eclipse 용 Plugin이 있습니다. "누출"메모리가 정확히 어디에 있는지, 그리고 메모리가 부족해질 때까지 앱을 채우고있는 위치를 보여줍니다. http://www.vogella.com/articles/EclipseMemoryAnalyzer/article.html

내가 과거에 그것을 사용하고 플러그인이 나에게 많은 도움이 : 여기

는 튜토리얼입니다.

+0

팁 주셔서 감사. 훌륭한 플러그인. 문제는 지금 해결되었습니다. – Veijo

+1

당신을 진심으로 환영합니다. 대답을 정답으로 표시하면 좋을 것입니다. =) – Tim