장치에 악기를 사용하여 메모리가 누출되었거나 버려 졌는지 확인하려고합니다. 특히 나는 누수와 할당을 사용하고 있습니다. 악기가 누출을 지적하지는 않지만 그것이 내가 기억 문제가 없다는 것을 의미하지는 않습니다. 나는이 일을 몇 주 동안 해왔고, 나는 내가 가진 이슈를 알아내는 것에 더 가깝지 않은 것 같다.계측기 및 힙 (heap) 성장, 실제로 성장이 누출되었을 때?
조치 후에 힙샷을 찍어 반복하여 특정 작업을 테스트하고 있습니다. 처음 몇 세대에 걸쳐 "정착 (settling)"을 거친 후, 나는 성장과 지속 된 숫자가 모두 특정 숫자 (몇 킬로 비트)에서 시작한다는 것을 알 수 있습니다. 많은 반복 된 반복 (예를 들어 10-20) 후에 일부 (전부는 아님)가 천천히 0으로 유출됩니다. 그러나 시간이 좀 걸립니다. 스택 트레이스가 모든 시스템 라이브러리를 보여주기 때문에, 영속적 인 메모리가 남아있는 세대는 내가 실제로 도움이되는 것을 보여주지 못한다.
그래서 내 질문은 :
- 이러한 유형의 행동은 무엇을 나타 냅니까? 메모리 문제가 있습니까? 일부 유형의 메모리 누출은 어딘가에 있습니까?
- 영구 메모리를 보여주는 반복의 바다에서 힙 힙이 반복되는 것을 의미하는 것은 무엇입니까?
- 특정 세대의 스택 추적에서 시스템 라이브러리 만 가리키는 경우 해당 세대의 힙 성장이 유효하거나 버그가 있음을 의미합니까? 아니면 내 끝 부분에있는 기억에 뭔가가 있다는 것을 의미 할 수 있습니까?
- 스택 트레이스가 라이브러리와 메소드를 보여 주지만 시스템 코드와 같이 회색으로 표시되고 집 아이콘이 작고 라이브러리 및 검정색과 작은 메소드가있는 라인이있는 것은 무엇을 의미합니까? 상?
- 주기를 유지하는 것과 같은 일관성있는 성장이 유지되지 않습니까?
통찰력에 대한 답변은 매우 유용 할 것입니다.
이것을 알아 냈습니까? 나는 새로운 컨트롤러를 많이 할당 할 때 똑같은 것을 보게된다. –
얼마간의 고투 끝에 나는 20-30 회 반복 한 후에도 힙이 한 번 성장했다는 것을 알게되었다. 내가 배정한 모든 배정은 시스템 라이브러리에서 나온 것이었고, 발생한 메모리는 그다지 많지 않았습니다. 좋은 답변이 아닙니다. 알아요. 누군가 다른 사람이 차임을하면 좋을 것입니다. – dragonflyesque
상황이 충분히 빨리 풀리지 않는 어딘가에 루프가있을 수 있습니다. @autorelease에서 그 단단한 루프를 감싸십시오. – uchuugaka