Very large collection in .Net causes out-of-memory exception

The Microsoft CLR has a 2GB maximum object size limit, even the 64 bit version. (I’m not sure whether this limit is also present in other implementations such as Mono.)

The limitation applies to each single object — not the total size of all objects — which means that it’s relatively easy to workaround using a composite collection of some sort.

There’s a discussion and some example code here…

There seems to be very little official documentation that refers to this limit. It is, after all, just an implementation detail of the current CLR. The only mention that I’m aware of is on this page:

When you run a 64-bit managed
application on a 64-bit Windows
operating system, you can create an
object of no more than 2 gigabytes
(GB).

Leave a Comment