Nat*_*ate 9 .net c# memory memory-management
我读过(http://blogs.msdn.com/joshwil/archive/2005/08/10/450202.aspx).NET中对象的最大大小是2 GB.
我是否正确假设如果我有一个占用256 MB内存的对象,因为它是一个引用类型,我可以拥有这些256 MB对象的数组,其中所有对象一起可能占用> 2GB内存,只要大小引用数组的值是否低于2 GB?
Luk*_*keH 10
是的,你的假设是正确的.
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
| 归档时间: |
|
| 查看次数: |
8695 次 |
| 最近记录: |