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