Pergunta

Meu aplicativo falhar após cerca de 20 minutos com o status 101 (Out of Memory, creio eu)

Depuração usando Instruments - ObjectAlloc e vazamentos me dá nenhuma pista. As estadias gráfico ObjectAlloc a um nível constante agradável de cerca de 1 milhão de bytes (1MB), assim como o # Líquido de alocações. Eu tenho livrar de todos os vazamentos.

Eu pensei que poderia ser algo a ver com o número de threads, mas gráficas estes em ObjectAlloc também mostra-lhes que ser constante.

Alguém pode me aponte na direção de outra ferramenta, ou outra via de investigação?

Foi útil?

Solução

Fix tudo Clang encontra. LLVM Clang Análise Estática

Outras dicas

Lembre-se que objetos alocados pelo sistema (e que inclui coisas como imagens e sons) não são rastreados em Instruments (embora o nível superior reter contagem de fazer, é claro). Então é feasable que você está carregamento de imagens, por exemplo, que não contribuem muito para o seu uso de memória como a mostra, mas pode drenar uma grande quantidade de memória real!

Se nada disso parece quaisquer acordes, você pode tentar a abordagem depuração subtrativo - (levar uma cópia do seu projeto) recorte pedaços de funcionalidade até que o problema desaparece ou você recebe a menor coisa possível que reproduz. Isso deve, pelo menos, ajudá-lo a descobrir onde está o gargalo. É certo que este será difícil (a) porque você vai ter que esperar 20 minutos ou mais cada vez que você teste (mas se você fizer isso um procedimento fundo não é tão ruim) e (b) porque a natureza de problemas de memória é que há pode não ser uma causa única, mas uma massa crítica de causas menores.

Boa sorte!

As minhas experiências com objetos Alloc não ter sido tão grande. Nem sempre dar-lhe a memória real usado pelo seu aplicativo.

Em vez disso, o uso de objetos Alloc com Activity Monitor. Certifique-se de usar o "Memory gratuito Física" e "memória física usada" opções no monitor de atividade. Isso vai lhe dizer exatamente o quanto de memória seu aplicativo está usando.

O que você quer dizer com "nível bom". Ele não sobe ao longo do tempo, em tudo? Quanta memória total - pode ser apenas o telefone precisa de alguma memória para algum outro aplicativo e o seu é um pouco grande demais para ficar acordado

.

Os 101 meios de código de erro que força iPhone OS sair do seu aplicativo. Se você estiver usando UIImageViews em seu aplicativo, certifique-se de gerenciar a memória sobre eles. Eu descobri que uma vez que a minha candidatura passa por cima 10/12 MB, o iPhone termina-lo.

Se você não estiver usando quaisquer pontos de vista de imagem (ou imagens grandes), em seguida, o código de back-end está comendo muito espaço.

Tudo o que posso dizer é que você precisa olhar para sua alocação de mais cuidado e gerenciar o que vê-lo a manter na memória a qualquer momento um.

Execute o aplicativo em Instruments (Run -> Iniciar com Performamce Tool -> Vazamentos). Para ver onde sua memória está sendo alocada

Espero que isso ajude!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top