我可以在.NET中创建多少个位图?

时间:2010-07-09 10:41:57

标签: c# .net vb.net gdi+

.NET Bitmap类使用GDI +

我想知道我可以创建多少个位图。

创建太多位图时内存是否会泄漏?

6 个答案:

答案 0 :(得分:2)

只要您使用框架制作它们,内存就不会泄露。 Bitmap类的制作方式是实例在完成时自行处理,就像任何自尊的IDisposable一样,所以即使忘记Dispose也不会导致问题。

至于你可以制作多少,这取决于你需要多少记忆。

答案 1 :(得分:2)

每个会话的GDI句柄限制为65536。见http://msdn.microsoft.com/en-us/library/ms724291(VS.85).aspx

答案 2 :(得分:2)

MSDN说

  

每个会话理论上限制为65,536个GDI句柄。但是,每个会话可以打开的最大GDI句柄数通常较低,因为它受可用内存的影响。

来源:http://msdn.microsoft.com/en-us/library/ms724291%28VS.85%29.aspx

答案 3 :(得分:0)

Bitmap是一个GDI +对象,您在系统中获得的对象数量有限。当然你可以调整系统。我认为你不会出现内存泄漏,但如果你超出了这个限制就会出现系统异常。

答案 4 :(得分:0)

您可能会面临内存泄漏问题,但您可以通过编写简单的代码来解决它

      using (frame) {
          frame.Save(outStream, jpegCodec, parameters);
      }

答案 5 :(得分:0)

Windows XP和Vista - 默认限制

Windows XP和Vista中的默认限制为10,000。您可以从“任务管理器”

监视应用程序具有的GDI对象的数量

http://msdn.microsoft.com/en-us/library/ms724291(VS.85).aspx

注意:我测试了一个带有HashMorePages = True的PrintPreview,直到它抛出异常(大约4800页),每个页面需要2个Gdi +对象。