2017-01-07 6 views
2

Google은 액티비티 간 이동 중에 30MB 이상의 메모리 할당에서 500MB 이상으로 뛰어 넘는 앱을 보유하고 있습니다. 그런 일이 발생하는 동안 할당을 추적 할 수 있으며 메모리에서 무엇이 보유되고 있는지 볼 수 있지만 힙의 HPROF 파일을 만들어서 MAT에로드하고 그 메모리를 사용하는 방법을 더 잘 이해할 수 있습니다.Android Studio에서 메모리 할당량이 많은 힙 덤프가 끝나지 않습니다.

그러나 덤프를 만들려고하면 점선과 회 전자가 메모리 그래프에 표시되고 끝나지 않고 (겉으로보기에) 계속 유지됩니다. 문제없이 더 낮은 할당량으로 덤프를 만들 수는 있지만 500+ MB가 할당 된 상태에서 할당량을 할당 할 수는 없습니다.

해당 시나리오의 알려진 문제점을 찾았지만 찾을 수 없습니다. 문제 해결을 위해 변경할 수있는 설정이 있습니까? 아니면 문제를 해결하기 위해 할 수있는 일이 있습니까? 힙에 대한 좋은 분석이 없다면, 나는 기억에 어떤 일이 일어나고 있는지 눈이 멀었다.

참고 : 저는 메모리 문제 자체에 대한 도움을 찾고 있지 않습니다. ATM, 저는 주로 힙 덤프를 어떻게 얻을 수 있는지에 관심이 많습니다.

+1

500MB는 프로세스의 힙 한도를 훨씬 넘어야하므로 MAT가 얼마나 유용 할 것인지 잘 모르겠습니다. 하지만 문제가되는 상태에 도달 할 수있는 확실한 방법이 있다면 테스트 케이스를 작성하고 HPROF 파일을 얻는 것이 더 좋은지 확인하십시오 (Debug.dumpHprofData()를 통해) (https : // developer.android.com/reference/android/os/Debug.html#dumpHprofData(java.lang.String)). – CommonsWare

+0

터미널 메소드에 시도해 보겠습니다. 고마워요! 불행히도이 문제를 재현 할 수있는 확실한 방법은 없습니다. 문제가없는 날 동안 앱을 사용하고 갑자기 스파이크가 보이면 일단 제거하고 다시 설치하면 문제가 다시 발생합니다. 상태. 그것은 아주 드문 일입니다. – jkane001

+0

@commonsware 터미널 명령 트릭을 해냈어, 고마워! 답변을 제출하면 기꺼이 받아 들일 것입니다. – jkane001

답변

0

나는이 링크가 당신이 무엇을 찾는 데 도움이 될 것이라고 확신합니다. 이 방법을 통해했습니다. 여기에 링크가 있습니다 : Memory Profiler

+0

나는 좋은 정보를 가지고있는 링크를 고맙게 생각한다 - 그러나 나는 이미 그것을 모두 알고 있었고, 나의 문제는 HPROF 파일을 얻을 수 없다는 것이다. (기사의 끝 부분에서 매트를 심층적 인 프로파일 링을 위해 사용할 것을 권고한다.) 생성. – jkane001