Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C“我应该在使用”时关闭流吗;使用“?”;?_C#_Service_Stream_Using - Fatal编程技术网

C# C“我应该在使用”时关闭流吗;使用“?”;?

C# C“我应该在使用”时关闭流吗;使用“?”;?,c#,service,stream,using,C#,Service,Stream,Using,我有一个服务运行在一个压缩文件的服务器上,我注意到每天消耗的内存都在增加,当我在服务器上部署它时,它消耗了3.6Mb,今天,3个月后,它消耗了180Mb 这是我正在使用的代码的一部分: for (i = 0; i < files.Count; i++) { try { if (File.Exists(@dir + zipToUpdate) && new FileInfo(@dir + zipToUpdate).Length < 1048

我有一个服务运行在一个压缩文件的服务器上,我注意到每天消耗的内存都在增加,当我在服务器上部署它时,它消耗了3.6Mb,今天,3个月后,它消耗了180Mb

这是我正在使用的代码的一部分:

for (i = 0; i < files.Count; i++)
{
    try
    {
        if (File.Exists(@dir + zipToUpdate) && new FileInfo(@dir + zipToUpdate).Length < 104857600)
        {
            using (FileStream zipToOpen = new FileStream(@dir + zipToUpdate, FileMode.Open))
            {
                using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update, false))
                {

                    if (File.GetCreationTime(@dir + files.ElementAt(i)).AddHours(FileAge) < DateTime.Now)
                    {
                        ZipArchiveEntry fileEntry = archive.CreateEntry(files.ElementAt(i));
                        using (BinaryWriter writer = new BinaryWriter(fileEntry.Open()))
                        {
                            using (FileStream sr = new FileStream(@dir + files.ElementAt(i), FileMode.Open, FileAccess.Read))
                            {
                                byte[] block = new byte[32768];
                                int bytesRead = 0;
                                while ((bytesRead = sr.Read(block, 0, block.Length)) > 0)
                                {
                                    writer.Write(block, 0, bytesRead);
                                    block = new byte[32768];
                                }
                            }
                        }
                        File.Delete(@dir + files.ElementAt(i));
                    }
                }
            }
        }
        else
        {
            createZip(files.GetRange(i, files.Count-i), dir + "\\", getZipName(dir, zipToUpdate));
            return;
        }
    }
    catch (Exception ex)
    {

        rootlog.Error(string.Format("Erro Run - updateZip: {0}", ex.Message));
    }
}
for(i=0;i0)
{
writer.Write(块,0,字节读);
块=新字节[32768];
}
}
}
File.Delete(@dir+files.ElementAt(i));
}
}
}
}
其他的
{
createZip(files.GetRange(i,files.Count-i),dir+“\\”,getZipName(dir,ziptupdate));
返回;
}
}
捕获(例外情况除外)
{
Error(string.Format(“Erro Run-updateZip:{0}”,ex.Message));
}
}
zip或更新的创建是相似的,因此粘贴这两个代码没有意义

我对其中的文件夹进行递归调用,服务每小时运行一次


因此,我的问题是,是否所有这些流都是导致我的内存使用量逐月增加的原因,或者它可能是其他原因。

使用
语句负责关闭它打开的
IDisposable
对象。这不是您所观察到的潜在内存泄漏的来源。

如果您使用的是using it自动关闭,循环一旦退出是的,我就是这么想的。。这就是为什么我不知道为什么记忆在增加。。。这段代码中可能有任何内存泄漏?顺便说一句,如果你的
using(var foo=woo)
语句只包含另一个
using
,你可以省略括号以获得更整洁的代码。@JoãoSilva你如何衡量“内存增加”@JoãoSilva而不是试图猜测内存泄漏(可能)发生在哪里,通过内存分析器运行程序。我的猜测是GC只是在偷懒,但如果没有适当的测量,我猜你猜。