Capítulo 7. Tempo de vida do objeto
Este trabalho foi traduzido com recurso a IA. Agradecemos o teu feedback e comentários: translation-feedback@oreilly.com
Um benefício do modelo de execução gerenciado do .NET é que o tempo de execução pode automatizar a maior parte do gerenciamento de memória do aplicativo. Mostrei vários exemplos que criam objetos com a palavra-chave new, e nenhum deles liberou explicitamente a memória consumida por esses objetos.
Na maioria dos casos, não precisas de tomar qualquer ação para recuperar a memória. O tempo de execução fornece um coletor de lixo (GC),1 um mecanismo que descobre automaticamente quando os objetos não estão mais em uso e recupera a memória que eles estavam ocupando para que ela possa ser usada para novos objetos. No entanto, há certos padrões de uso que podem causar problemas de desempenho ou até mesmo derrotar o GC completamente, por isso é útil entender como ele funciona. Isso é particularmente importante com processos de longa duração que podem ser executados por dias (processos de curta duração podem ser capazes de tolerar alguns vazamentos de memória).
O GC foi concebido para gerir a memória de forma eficiente, mas a memória não é o único recurso limitado com que podes ter de lidar. Algumas coisas têm uma pequena pegada de memória no CLR mas representam algo relativamente caro, como uma ligação a uma base de dados ou um identificador de uma API do SO. O GC nem sempre lida com estas coisas de forma eficaz, por isso vou explicar-te ...