Uma coisa a salientar é que o Dictionary não retém o objeto em si (que pode ter uma grande área de memória), mas apenas uma referência ao objeto; portanto, se os objetos forem complexos, isso não terá impacto no tamanho do Dictionary.
Eu coletei vários milhares de itens juntos em um Dicionário na memória e o problema não é o tamanho do Dicionário, mas o tamanho dos próprios objetos na memória. Nesses casos, o próprio dicionário era uma pequena parte da memória envolvida.
Uma coisa a se pensar nos casos de dicionários grandes é configurar e gerenciar manualmente a capacidade do dicionário. Em circunstâncias normais, o .Net gerencia essa multa (na implementação atual, se ficar sem espaço, ela será redimensionada para um número primo que seja pelo menos duas vezes o tamanho atual do Dicionário). No entanto, se você sabe que criará um grande dicionário ou expandirá o dicionário em vez de adivinhar e redimensionar o dicionário para você (o que é relativamente caro), provavelmente é melhor você fazer isso sozinho (certamente com a inicial tamanho e provavelmente o redimensionamento posterior). Isso pode ser feito gerenciando a capacidade do Dicionário se você tiver uma idéia heurística razoável de qual deve ser a capacidade do Dicionário. A Microsoft recomenda isso emMSDN em seus comentários sobre o objeto Dictionary . No entanto, parece haver algum debate sobre o valor real dessa abordagem, embora eu não tenha certeza de quão rigoroso é esse teste e se há outras otimizações que a plataforma .Net implementa quando um dicionário está redimensionando extremamente rapidamente.
Essa é uma pergunta útil sobre estouro de pilha sobre o tamanho do objeto e da memória.