Eri*_*ert 10
我试图在这个措辞奇怪的问题中找到一个真正的问题.这些问题怎么样?
假设有足够的可用虚拟内存空间,是否存在对.NET中对象大小的理论限制?
是.无论操作系统如何,运行时都不允许大于2 GB的单个托管对象.
在Windows中合法分配比虚拟内存空间更大的内存块是否合法?
是.人们常常对这个事实感到惊讶,但请记住,虚拟内存被称为虚拟内存是有原因的; 这不是真正的记忆.真正的内存是磁盘空间.
内存不是RAM - 这只是磁盘空间之上的快速,方便的缓存.内存不是虚拟内存; 虚拟内存只是一种引用内存的便捷方式.在我看来,内存最好是可视化为磁盘上交换文件中的页面.
如果你想在32位Windows中分配一个40亿字节的块,那就没问题了; 操作系统将在磁盘上保留40亿个字节.然后,您可以决定如何将其映射到虚拟地址空间; 它并不都适合,所以你必须自己管理映射并取消映射.Raymond在这里描述了如何做到这一点:
http://blogs.msdn.com/b/oldnewthing/archive/2004/08/10/211890.aspx
我不知道有任何库允许你对C#中很容易做的内存块进行操作,但是如果没有可用的内存块,那么编写一个库并不是特别困难.坦率地说,虽然我倾向于使用内存映射文件(你可以用 C#做),而不是自己做映射.
| 归档时间: | 
 | 
| 查看次数: | 396 次 | 
| 最近记录: |