title: Why does cpython not call gc.collect() prior to raising a MemoryError?
body: <p>I noticed that cpython will raise a MemoryError even in situations where almost half of all system memory is marked for gc, but the number of marked objects is below the gc threshold. Manually calling gc.collect() and retrying the operation that raised the original MemoryError succeeds in these cases and a large amount of RAM is reclaimed in the process. </p>
  
  <p>Is there a reason cpython doesn't attempt to gc.collect() prior to raising the MemoryError? Are there disadvantages to doing so?</p>