Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Strictly speaking, a memory leak is consuming memory that is "no longer used" by the program.</p> <p>"No longer used" has more than one meaning, it could mean "no more reference to it", that is, totally unrecoverable, or it could mean, referenced, recoverable, unused but the program keeps the references anyway. Only the later applies to .Net for <strong>perfectly managed objects</strong>. However, not all classes are perfect and at some point an underlying unmanaged implementation could leak resources permanently for that process.</p> <p>In all cases, the application consumes more memory than strictly needed. The sides effects, depending on the ammount leaked, could go from none, to slowdown caused by excessive collection, to a series of memory exceptions and finally a fatal error followed by forced process termination.</p> <p>You know an application has a memory problem when monitoring shows that more and more memory is allocated to your process <strong>after each garbage collection cycle</strong>. In such case, you are either keeping too much in memory, or some underlying unmanaged implementation is leaking.</p> <p>For most leaks, resources are recovered when the process is terminated, however some resources are not always recovered in some precise cases, GDI cursor handles are notorious for that. Of course, if you have an interprocess communication mechanism, memory allocated in the other process would not be freed until that process frees it or terminates.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload