C# 计算我的服务使用的内存释放

C# 计算我的服务使用的内存释放,c#,web-services,web-applications,memory-management,C#,Web Services,Web Applications,Memory Management,我有一个web应用程序,它使用C#中的下一个代码从文件中读取数据: string[]分割线; System.IO.StreamReader sr=新的System.IO.StreamReader(数据文件); line=sr.ReadLine(); while(行!=null) { dimenc[nn]=新的双[维度+1]; 对于(int m2=0;m2

我有一个web应用程序,它使用C#中的下一个代码从文件中读取数据:

string[]分割线;
System.IO.StreamReader sr=新的System.IO.StreamReader(数据文件);
line=sr.ReadLine();
while(行!=null)
{
dimenc[nn]=新的双[维度+1];
对于(int m2=0;m2
我的本地主机有8GB的ram,但当它开始读取大数据文件时,就会开始使用内存孔,出现内存不足异常


让我们举一个例子,我的文件有10个元素,2维,这将使锯齿状数组像这样:
dimen[10][2]
这样,定位的物理内存将是160字节,在更大的文件中,我可以找到1.5 Gb的物理内存,但是当我从任务管理员那里查看物理内存时,它说它已经被使用了7.5 Gb或更多,那么这怎么可能呢?在计算已使用的总内存量时,我是否遗漏了一些内容?

您的生产应用程序中的实际尺寸是多少?您正在存储N*M个双倍。如果只是几十个,这应该不会是个问题,但是如果你存储了数十亿,那么显然需要几GB的数据;没有真正的解决办法。@Servy是的,锯齿数组是N*M的两倍,我测试的最大值是[100000000][2];即使如此,这只需要1.5 gb的物理内存,但任务管理器表明它已被使用7 gb
string [] split_line;
System.IO.StreamReader sr = new System.IO.StreamReader(data_file);
line = sr.ReadLine();
while (line != null)
{
    dimenc[nn] = new double[dimentions+1];
    for (int m2 = 0; m2 < dimentions; m2++)
    {
        split_line = line.Split(new Char[] { ' ', ',', '\t' });
        dimenc[nn][m2] = Convert.ToDouble(split_line[m2]);
    }
    nn = nn + 1;
    line = sr.ReadLine();
}