![]() |
Created by Thiago Russo
over 7 years ago
|
|
Question | Answer |
o q são recursos não gerenciados? pq é importante gerenciá-los? | GC seria suficiente se vc só usa recursos gerenciados. Mantendo objetos como strings, int e outros tipos gerenciados é completamente manipulado pelo GC. Mas qdo vc acessar recursos não gerenciados, as coisas mudam. Recursos n gerenciados podem ser uma conexão de rede, manipulação de arquivo, manipulação de janela, e assim por diante. Você tem que liberar (release) explicitamente esses itens. Se n vc vai ter erros como "este arquivo está em uso" ou vc não será capaz de se conectar ao seu BD pq todas as conexões estão em uso. |
finalizer o q é e exemplo |
Image:
Finalizer (image/png)
|
finalizer ex de problema que pode ocorrer e possível solução (mas ainda ñ é a ideal) | |
qual a diferença de executar o código anterior no modo release e debug? | Release: o GC vê q n há mais referências ao stream, libera qlq memória associada à instância StreamWriter. Isto irá executar o finalizador, q por sua vez vai liberar (release) os manipuladores de arquivo do arquivo temp.dat Debug: o compilador irá certificar-se q a referência n é lixo coletado até o fim do método |
finalizador aumenta o ciclo de vida de um objeto | Como o código de finalização também tem q ser executado, o .NET mantém uma referência para o obj em uma fila especial de finalização. Uma thread adicional executa todos os finalizadores em um determinado tempo considerado apropriado com base no contexto de execução. Isso atrasa coleta de lixo para os tipos que têm um finalizador. |
Want to create your own Flashcards for free with GoConqr? Learn more.