Sobes.tech
Middle

How much memory is allocated when creating a new HashSet?

sobes.tech AI

Answer from AI

When creating a new HashSet<T> in C#, memory is allocated for the internal data structures — usually an array of buckets and an array of entries.

By default, if no initial capacity is specified, HashSet creates internal arrays with a small initial capacity (usually 0 or 3-7 elements, depending on the implementation).

Memory is allocated for:

  • the bucket array — an array of integers pointing to element indices;
  • the entries array — a structure storing the hash code, value, and a link to the next element in the chain during collisions.

The size of the allocated memory depends on the initial capacity and the type of elements (T).

Example:

var set = new HashSet<int>(); // memory allocated for the initial capacity

If you want to optimize memory, you can specify an initial capacity:

var set = new HashSet<int>(100); // memory allocated for 100 elements

Thus, the exact amount of memory depends on the implementation and constructor parameters, but it always includes internal arrays for storing elements and managing collisions.