title: Allocating more than 1,000 MB of memory in 32-bit .NET process
body: <p>I am wondering why I'm not able to allocate more that 1,000 MB of memory in my 32-bit .NET process. The following mini application throws an OutOfMemoryException after having allocated 1,000 MB. Why 1,000 MB, and not say 1.8 GB? Is there a process-wide setting I could change?</p>
  
  <pre><code>static void Main(string[] args)
  {
      ArrayList list = new ArrayList();
      int i = 0;
      while (true)
      {
          list.Add(new byte[1024 * 1024 * 10]); // 10 MB
          i += 10;
          Console.WriteLine(i);
      }
  }
  </code></pre>
  
  <p>PS: Garbage collecting does not help.</p>
  
  <p><strong>Edit, to clarify what I want:</strong> I have written a server application which deals with very large amounts of data before writing to database/disk. Instead of creating temporary files for everything, I have written an in-memory cache, which makes the whole thing super-fast. But memory is limited, and so I tried to find out what the limits are. And wondered why my small test program threw the OutOfMemoryException after exactly 1,000 MB.</p>