title: Why am I getting an Out Of Memory Exception in my C# application?
body: <p>My memory is 4G physical, but why I got out of memory exception even if I create just 1.5G memory object. Any ideas why? (I saw at the same time, in the performance tab of task manager the memory is not full occupied, and I could also type here -- so memory is not actually low, so I think I hit some other memory limitations)?</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  
  namespace TestBigMemoryv1
  {
      class MemoryHolderFoo
      {
          static Random seed = new Random();
          public Int32 holder1;
          public Int32 holder2;
          public Int64 holder3;
  
          public MemoryHolderFoo()
          {
              // prevent from optimized out
              holder1 = (Int32)seed.NextDouble();
              holder2 = (Int32)seed.NextDouble();
              holder3 = (Int64)seed.NextDouble();
          }
      }
  
      class Program
      {
          static int MemoryThreshold = 1500; //M
          static void Main(string[] args)
          {
              int persize = 16;
              int number = MemoryThreshold * 1000 * 1000/ persize;
              MemoryHolderFoo[] pool = new MemoryHolderFoo[number];
              for (int i = 0; i &lt; number; i++)
              {
                  pool[i] = new MemoryHolderFoo();
                  if (i % 10000 == 0)
                  {
                      Console.Write(".");
                  }
              }
  
              return;
          }
      }
  }
  </code></pre>