iOS - gerenciamento de memória

O gerenciamento de memória no iOS era inicialmente não ARC (contagem automática de referência), onde temos que reter e liberar os objetos. Agora, ele suporta ARC e não precisamos reter e liberar os objetos. O Xcode cuida do trabalho automaticamente em tempo de compilação.

Problemas de gerenciamento de memória

De acordo com a documentação da Apple, os dois principais problemas no gerenciamento de memória são -

  • Liberando ou substituindo dados que ainda estão em uso. Isso causa corrupção de memória e normalmente resulta em travamento do aplicativo ou, pior, dados corrompidos do usuário.

  • Não liberar dados que não estão mais em uso causa vazamentos de memória. Quando a memória alocada não é liberada, embora nunca seja usada novamente, isso é conhecido como vazamento de memória. Vazamentos fazem com que seu aplicativo use quantidades cada vez maiores de memória, o que por sua vez pode resultar em baixo desempenho do sistema ou (no iOS) seu aplicativo sendo encerrado.

Regras de gerenciamento de memória

  • Nós possuímos os objetos que criamos e temos que liberá-los posteriormente, quando não forem mais necessários.

  • Use Retain para obter a propriedade de um objeto que você não criou. Você também deve liberar esses objetos quando eles não forem necessários.

  • Não libere os objetos que você não possui.

Manuseio de memória em ARC

Você não precisa usar liberação e retenção no ARC. Portanto, todos os objetos do controlador de visualização serão liberados quando o controlador de visualização for removido. Da mesma forma, os subobjetos de qualquer objeto serão liberados quando forem liberados. Observe que se outras classes tiverem uma referência forte a um objeto de uma classe, a classe inteira não será lançada. Portanto, é recomendável usar propriedades fracas para delegados.

Ferramentas de gerenciamento de memória

Podemos analisar o uso de memória com a ajuda dos instrumentos da ferramenta Xcode. Inclui ferramentas como Monitor de Atividade, Alocações, Vazamentos, Zumbis e assim por diante.

Etapas para analisar alocações de memória

Step 1 - Abra um aplicativo existente.

Step 2 - Selecione Produto e Perfil conforme mostrado abaixo.

Step 3 - Selecione Alocações na próxima tela mostrada abaixo e selecione Perfil.

Step 4 - Veremos a alocação de memória para diferentes objetos como mostrado abaixo.

Step 5 - Você pode alternar entre os controladores de visualização e verificar se a memória foi liberada corretamente.

Step 6 - Da mesma forma, em vez de alocações, podemos usar o Activity Monitor para ver a memória geral alocada para o aplicativo.

Step 7 - Essas ferramentas nos ajudam a acessar nosso consumo de memória e localizar os locais onde ocorreram possíveis vazamentos.