繁体   English   中英

Windows中的任务管理器:“内存”选项卡

[英]Task Manager in Windows : Memory Tab

我创建了非常简单的程序,并将计算机设置为具有有限的虚拟内存。 32GB RAM和4GB虚拟内存。 然后,我制作了C#代码以消耗所有的.NET内存。

List<HeapSizeAllocation> hsaList = new List<HeapSizeAllocation>();

public class HeapSizeAllocation
    {

        int[] _arr;
        int s1Gb = ( 1024 * 1024 * 1024) /sizeof(int); //1GB = 1024MB 1MB= 1024Kb 

        public void Test()
        {

            //Test simple array allocation
            _arr = new int[s1Gb * 2];

        }
    }

单击()=>重复,直到内存不足

 HeapSizeAllocation hsa = new HeapSizeAllocation();
                hsaList.Add(hsa);

                hsa.Test();

然后,我在Windows中打开TaskManager,仍然看到21 GB的可用空间,只有10 GB的空间正在使用。 为什么? 在此处输入图片说明

您通过“系统属性”设置指定的4 GB实际上是允许的页面文件的大小。 不幸的是,该设置称为“虚拟内存”,因为它与虚拟内存概念的真正含义混淆。

需要牢记的两个重要事项:

  • 由于默认的Platform target默认设置,用于在x64 Windows盒子上使用Visual Studio构建的C#项目的进程的默认虚拟地址空间将被限制为4 GB。 您必须更改此设置(例如,针对x64平台进行编译)才能看到更多的使用情况
  • 只要您只分配数据,但不以任何方式接触数据,工作集(即数据实际使用了多少RAM)将保持在较低水平

我写了一篇文章专门为你所引用的场景(内存抛出的机器上用大量的RAM,但大量的内存仍留下可用的) 在这里 它详细解释了事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM