簡體   English   中英

.NET Max Memory即使對於x64程序集也使用2GB

[英].NET Max Memory Use 2GB even for x64 Assemblies

我讀過( http://blogs.msdn.com/joshwil/archive/2005/08/10/450202.aspx).NET中對象的最大大小是2 GB。

我是否正確假設如果我有一個占用256 MB內存的對象,因為它是一個引用類型,我可以擁有這些256 MB對象的數組,其中所有對象一起可能占用> 2GB內存,只要大小引用數組的值是否低於2 GB?

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

2GB限制適用於每個對象。 用於所有對象的總內存可能超過2GB。

(運行時是否能夠為您的需求分配足夠的內存是另一回事。我懷疑它是否可以在32位機器上找到完整的2GB備用內存,但它在64位上應該不是問題。)

“在.NET 4及更早版本中,即使在64位進程中,任何對象的大小也不能超過2GB。但是,對於使用大型數組的某些工作負載,此大小限制可能會受到限制。因此,.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM