2009-06-11 56 views
9

我讀過(http://blogs.msdn.com/joshwil/archive/2005/08/10/450202.aspx)在.NET對象的最大容量爲2 GB。甚至針對x64組件.NET最大內存2GB使用

我正確的假設,如果我有一個對象,佔用256 MB內存,因爲它是一個引用類型,我可以有一個這些256 MB對象的數組,其中所有的對象可能佔用> 2GB內存爲只要參考陣列的大小保持低於2 GB?

+0

有趣的問題。我不知道64位機器上會有這個限制。這就是說,我無法想象在一個對象中容納2GB的應用程序的許多場景! – RichardOD 2009-06-11 16:41:16

+0

我同意,在單個對象中需要超過2 GB的場景並不多。遊戲服務器或數據庫服務器真的是唯一想到的事情。 – Nate 2009-06-11 17:00:51

回答

10

是的,你的假設是正確的。

2GB限制適用於每個對象單獨。用於所有對象的總內存可能超過2GB。 (不管運行時是否能夠爲您的需求分配足夠的內存是另一回事,我懷疑它是否能夠在32位機器上找到完整的2GB備用內存,但它在64位上應該不成問題。)

6

「以.NET 4和前面,沒有對象可以超過2GB更大的尺寸,即使是在64位的進程。對於使用大型陣列某些工作負荷,但是,該尺寸限制可以是約束,因此,。 NET 4.5支持在64位進程中提升數組的限制,例如數組可能大於2GB,這意味着您可以分配Int32.MaxValue Int32s數組,即使這樣的數組會消耗8GB。 .NET中的大對象分配在一個特殊的堆上,並非巧合地稱爲大對象堆(LOH); .NET 4.5也看到了LOH的顯着性能改進,包括使用更好的算法來管理堆中的空閒內存。「

http://msdn.microsoft.com/en-us/library/hh285054(v=VS.110).aspx

http://blogs.msdn.com/b/somasegar/archive/2012/05/16/net-improvements-for-cloud-and-server-applications.aspx

相關問題