我总是有这个问题,哪个(RAM / HARD DISK /其他(?))是Heap所在的位置?
如果我通过内存中的代码加载2 GB文件,那么它会去哪里?
这个“堆叠”位于物理位置的哪个位置?内存 ?
来自实际实施团队的人可以告诉我们这个吗?因为大多数人说的是它的RAM。但我真的想知道两者在哪里以及如何? 如果在这里难以回答,请分享一些好文章。
答案 0 :(得分:2)
我建议阅读以下文章:
http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx
.NET堆只是应用程序用户地址空间的一部分。因此,它(以及其中分配的所有对象)当前是在RAM还是在磁盘上取决于整个系统的当前内存压力和VMM的决策。堆的一部分也可以同时存储在RAM和磁盘上的其他部分中。
答案 1 :(得分:2)
What and where are the stack-and-heap
这个问题及其答案非常详细地解释了它。它涵盖了堆栈和堆。如何使用它,差异等。它也有漂亮的图形!
答案 2 :(得分:0)
当您运行.NET exe时,它会加载将托管CLR的MSCorEE.dll。 CLR将在进程内存中创建堆栈和堆。如果需要,它会考虑为进程寻求更多内存。
它们将位于RAM中,尽管操作系统会将其抽象出来(例如,它可能位于交换文件中)。
答案 3 :(得分:0)
如果加载.NET进程的2GB
文件内存,它将在32位系统上崩溃,因为框架大约在32位系统上保持1.2GB
。
您正在谈论的记忆在.NET managed assemblies
的 RAM 中。对于其他人,由于可能内存交换,由操作系统本身在低 RAM 内存条件下进行,可以在磁盘上部分完成强>空间。