Articles of garbage collection de

Qualquer maneira de contornar a chamada de GC.Collect (2) do WPF além da reflection?

Eu recentemente tive que verificar essa monstruosidade em código de produção para manipular campos privados em uma class WPF: (tl; dr como evito ter que fazer isso?) private static class MemoryPressurePatcher { private static Timer gcResetTimer; private static Stopwatch collectionTimer; private static Stopwatch allocationTimer; private static object lockObject; public static void Patch() { Type memoryPressureType […]

Uso de memory livre do .NET (como evitar a sobrecarga / liberar memory para o sistema operacional)

Atualmente estou trabalhando em um site que faz grande uso de dados em cache para evitar roundtrips. Na boot, obtemos um gráfico “grande” (centenas de mãos de diferentes tipos de objects). Esses objects são recuperados em WCF e desserializados (usamos buffers de protocolo para serialização). Estou usando o profiler de memory do redgate para depurar […]

O WeakReference faz um bom cache?

Eu tenho um cache que usa WeakReferences para os objects em cache para torná-los automaticamente removidos do cache em caso de pressão de memory. Meu problema é que os objects em cache são coletados logo após serem armazenados no cache. O cache é executado em um aplicativo de 64 bits e, apesar do fato de […]

Preciso remover assinaturas de events de objects antes que eles fiquem órfãos?

Se o meu software tiver duas instâncias de objects, uma das quais está inscrita nos events da outra. Preciso cancelar a inscrição deles uns dos outros antes de ficarem órfãos para que eles sejam limpos pelo coletor de lixo? Ou há alguma outra razão pela qual eu deveria limpar as relações de evento? E se […]

Eventos de objects .NET e descarte / GC

EDIT: Após Joel Coehoorns excelente resposta, eu entendo que eu preciso ser mais específico, então eu modifiquei meu código para estar mais perto de coisa que eu estou tentando entender … Eventos: Pelo que entendi, no fundo os events são “coleção” de EventHandlers aka Delegados que serão executados quando o evento for gerado. Então, para […]

Como o .NET tem um coletor de lixo, por que precisamos de finalizadores / destruidores / padrão de descarte?

Se bem entendi o tempo de execução .net sempre limpar depois de mim. Então, se eu criar novos objects e parar de referenciá-los no meu código, o tempo de execução limpará esses objects e liberará a memory que eles ocupam. Como esse é o caso, por que alguns objects precisam ter um método de destruição […]

Como obtenho o .NET no lixo coletivamente?

Eu tenho um aplicativo que é usado no image processing, e eu me vejo tipicamente alocando matrizes no tamanho de 4000×4000 ushort, bem como a flutuação ocasional e similares. Atualmente, o .NET Framework tende a falhar neste aplicativo aparentemente aleatoriamente, quase sempre com um erro de falta de memory. 32mb não é uma grande declaração, […]

Coleta de lixo não está acontecendo mesmo quando necessário

Eu fiz um aplicativo de teste WPF de 64 bits. Com meu aplicativo em execução e com o Gerenciador de Tarefas aberto, vejo o uso da memory do sistema. Vejo que estou usando 2 GB e tenho 6 GB disponíveis. No meu aplicativo, clico em um botão Adicionar para adicionar uma nova matriz de bytes […]