2012-04-02 5 views
3

내 게임 앱에서 메모리 누수를 추적하려고합니다. 프로그램은 잘 실행되지만, 실행되고 반복적으로 닫히면 결국에는 일종의 메모리 오류가 발생합니다. 이클립스의 메모리 분석기를 설치하고 이해하려고 시도하면서 많은 실수를 한 끝에, 마침내 아래의 screengrab에 표시된 데이터를 생성했다.이클립스 메모리 분석기의 출력 해석하기

내 응용 프로그램은과 같이 하나의 응용 프로그램이라고 SD_globals을 기반으로합니다 SD_Globals에 선언 된 글로벌 다양한 데이터에 액세스 할 수있는 각각의

public class SD_Globals extends Application 
{ 
    int example_global_data = 99; 
    // stuff 
} 

와 5 개의 개별 활동을. 예를 들어, 활동 중 하나는과 같이 SD_gameplay입니다 :

public class SD_GamePlay extends Activity implements View.OnClickListener 
{ 
    SD_Globals gs; // gs stands for global state 

    gs = ((SD_Globals)getApplicationContext()); 

    // now I can access global variable using code like this: 
    int x = gs.example_global_data; 
} 

screengrab의 데이터를 보면, 게임 플레이의 반복 인스턴스가 이상하게 보인다. 내 생각 엔 아마도 가비지 수집을하지 않고도 액티비티가 실행될 때마다 새로운 액티비티가 새로 생성 될 것입니다 (맞습니까?) ... 그렇다면 어떤 일이 발생할 수 있습니까?

편집 : 내 해석에 대해 트랙 떨어져 완전히 해요 경우 이미지에 의심스러운 다른 아무것도 이있다?

+1

이전에이 Google IO 비디오를 보았습니까? http://www.youtube.com/watch?v=_CruQY55HOk 메모리 분석기 도구를 사용하는 방법에 대해 자세히 설명합니다. 클릭 할 위치를 정확히 기억하지는 않지만 각 객체가 참조하는 객체를 볼 수있는 방법이 있으므로이를 수집하지 않아야한다고 생각합니다. 비디오에서 자세히 설명해야합니다. – Tim

답변

1

SD_GamePlay$1, SD_GamePlay$2

enter image description here

와 다른 SD_GamePlay 클래스의 인스턴스되지 않습니다. SD_GamePlay 클래스의 익명 내부 클래스입니다. SD_GamePlay$MicksPanelThingSD_GamePlay$MicksThreadThingSD_GamePlay 클래스의 비 익명 내부 클래스입니다.

$ 이름 설명 : https://stackoverflow.com/a/7484241/436938

관련 문제