内存很充足,但却报了内存不足的异常 System.OutOfMemoryException,
故障描述
记录一个有趣的BUG;
项目终于到很离谱的事情,内存明明只占用了60%左右,但是却报了System.OutOfMemoryException
,常见的内存泄漏至少是卡死系统,但它不会,只是安安静静的告诉你,你的内存不足了,关闭就行了,岁月静好…
异常信息最终定位的方法名是FromHdcInternal
。
.> 在 System.Drawing.Graphics.FromHdcInternal(IntPtr hdc)
完全是系统API,全篇与项目里的代码不相干……不相干啊……淦!
故障原因
虽然System.OutOfMemoryException
字面意思是内存不足,但是触发System.OutOfMemoryException
异常的不仅仅是内存空间不足,还可能是 —— 句柄用光了!!
是的,代码把操作系统的句柄挥霍一空,妹释放啊!
所以,虽然Exception的信息里通篇没写这一切是你的错,但一切的祸根归咎于你,只是有人(操作系统)替你负重前行罢了。