Una cosa a señalar es que el Diccionario no va a contener el objeto en sí (que puede tener una gran huella de memoria) sino solo una referencia al objeto, por lo que si los objetos son complejos, esto no tiene impacto en el tamaño del Diccionario.
He reunido varios miles de elementos juntos en un Diccionario en memoria y el problema no es el tamaño del Diccionario sino el tamaño de los objetos en memoria. En estos casos, el Diccionario en sí era una pequeña porción de la memoria involucrada.
Una cosa a tener en cuenta en los casos de diccionarios grandes es configurar y administrar manualmente la capacidad del diccionario. En circunstancias normales, .Net administra esta multa (en la implementación actual, si se queda sin espacio, cambia el tamaño a un número primo que es al menos dos veces el tamaño actual del Diccionario). Sin embargo, si sabe que va a crear un diccionario grande o va a expandir el diccionario en lugar de .Net adivinar y cambiar el tamaño del diccionario para usted (lo cual es relativamente costoso), probablemente sea mejor que lo haga usted mismo (ciertamente con la inicial tamaño y, probablemente, la gestión de tamaños posteriores). Esto se puede hacer administrando la capacidad del Diccionario si tiene una idea heurística razonable de cuál debería ser la capacidad del Diccionario. Microsoft recomienda esto enMSDN en sus comentarios sobre el objeto Diccionario . Sin embargo, parece haber cierto debate sobre el valor real de este enfoque, aunque no estoy seguro de cuán rigurosa es esa prueba y si hay otras optimizaciones que la plataforma .Net implementa cuando un diccionario cambia el tamaño extremadamente rápido.
Esta es una pregunta útil de Stack Overflow sobre el objeto y el tamaño de la memoria.