Tag: 内存不足

c#visual studio 2017 CPU分析内存exception

我有一个长期运行的c#应用程序,我正在浏览Visual Studio 2017社区版。 在我停止分析(和应用程序)以查看CPU使用率之前运行大约2/3小时。 但是我可以看到它在构建报告时内存使用量增加3GB然后抛出内存不足exception。 Profiling started. Profiling process ID 7312 (test). Starting data collection. The output file is C:\Users\jamie\Source\Repos\test(1).vspx Profiler stopping. Stopping data collection. Merging collection data. Please wait… Data is saved in file C:\Users\jamie\Source\Repos\test(1).vspx Profiling finished. Exception of type ‘System.OutOfMemoryException’ was thrown. 我能做些什么来解决这个问题,还是只需要获得更多内存? 奇怪的是,我的机器上的总内存使用率大约是65%,因此它甚至没有使用我所有的内存来构建分析报告。 这是VS的全新安装,它具有所有默认设置。

使用HttpWebRequest流式传输大型文件时出现内存exception

当使用大文件的Http.Put时,我得到Out of Memory Exception。 我正在使用代码中显示的异步模型。 我正在尝试将8K数据块发送到Windows 2008 R2服务器。 当我尝试写入超过536,868,864字节的数据块时,会始终出现exception。 下面的代码片段中的requestStream.Write方法发生exception。 寻找原因? 注意:较小的文件是PUT OK。 如果我写入本地FileStream,逻辑也可以工作。 在Win 7 Ultimate客户端计算机上运行VS 2010,.Net 4.0。 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(“Http://website/FileServer/filename”); request.Method = WebRequestMethods.Http.Put; request.SendChunked = true; request.AllowWriteStreamBuffering = true; … request.BeginGetRequestStream( new AsyncCallback(EndGetStreamCallback), state); … int chunk = 8192; // other values give same result …. private static void EndGetStreamCallback(IAsyncResult ar) { […]

如何使用SqlDataReader重新填充字节数组?

这是参考: byte []并通过引用有效传递 并且在这篇文章中找到了SqlDataReader : 使用SqlDataReader获取二进制数据 在循环中,我正在调用数据库并返回一个大对象( varbinary[max] )。 目前,我OutOfMemoryexception,所以我试图减少大对象堆(LOH)中的占用空间。 所以,我正在为我下载的最大文件创建一个字节数组,并添加一些填充以防万一。 例如: byte[] currentFile = new byte[largestFileSize * 1.1]; 然后我传递这个currentFile数据库方法。 目前,我们使用EnterpriseLibrary来访问数据库: DbCommand storedProcedure = MedicareDatabase.Db.GetStoredProcCommand(spName); storedProcedure.CommandTimeout = 5000; if (parameters != null) { foreach (Param parameter in parameters) { if (parameter != null) { MedicareDatabase.Db.AddInParameter(storedProcedure, parameter.ParameterName, parameter.DbType, parameter.Value); } } } try { BinaryWriter bw; […]

使用VS2010编译时,仅在发布模式下OutOfMemoryException?

我的程序仅在Release模式下生成OutOfMemoryExcetion ,使用VS2010 C#编译器进行编译。 发生崩溃时它正在执行的操作是实例化1600个锯齿状数组,并且在下面循环的简化版本的第207个时它崩溃了: Double[][] arr = new Double[1600][]; int i = 0; while (i < 1600) { arr[i] = new Double[1000000]; i++; } 基本上,只要这部分代码生成~11.9 GB,考虑到Double消耗8个字节。 我没有那么多的RAM,但在另一个问题中我询问当RAM结束时会发生什么 ,他们回答我CLR创建了一个交换内存,尽管它只能解决明确定义的内存量。 当我在DEBUG模式下编译程序时,它不会抛出OutOfMemoryException ,相反,它会分配大量内存并保持程序运行…我没有足够的耐心检查程序是否运行顺畅,尽管慢慢地,直到最后,因为它花了太长时间。 所以: 在发布模式下没有在调试模式下发生了什么,导致程序在那里抛出exception? 考虑到我真的需要存储那么多的内存,因为它是由一些科学计算产生的数据,你有什么建议来处理这个问题? (我正在考虑在计算过程中处理生成的数据,虽然在计算过程中需要花费更多的时间,而不是生成大量数据然后处理它……)

转换大型Xml文件

我正在使用此扩展方法使用xslt转换非常大的xml文件。 不幸的是,我在source.ToString()行上得到了OutOfMemoryException。 我意识到必须有一个更好的方法,我只是不确定那会是什么? public static XElement Transform(this XElement source, string xslPath, XsltArgumentList arguments) { var doc = new XmlDocument(); doc.LoadXml(source.ToString()); var xsl = new XslCompiledTransform(); xsl.Load(xslPath); using (var swDocument = new StringWriter(System.Globalization.CultureInfo.InvariantCulture)) { using (var xtw = new XmlTextWriter(swDocument)) { xsl.Transform((doc.CreateNavigator()), arguments, xtw); xtw.Flush(); return XElement.Parse(swDocument.ToString()); } } } 思考? 解决方案? 等等。 更新:现在这已经解决了,我在validation架构时遇到了问题! validation大型Xml文件

OutOfMemoryException – 出于想法

我知道我的问题没有简单的答案,但我会欣赏想法,指南或某些东西 – 看看清单 我有一个不断抛出OutOfMemoryException的网络Windows服务。 该服务有两个用于x86和x64 Windows的版本。 但是在x64上它消耗了更多的内存。 我尝试使用各种内存分析器对其进行分析。 但我无法弄清楚问题是什么。 诊断 – 服务消耗了大量的VMSize并在3到12小时后崩溃应用程序。 行为是相当随机的 – 崩溃情景没有可观察的模式。 我还试着看一下性能计数器(perfmon.exe)。 我可以看到堆大小正在增长,%GC时间平均为19%。 内存分配与%CPU时间相关。 我的应用程序有线程和锁定对象,数据库连接和WCF接口。 我想解决的一般问题: GC GC对象或某些非托管(窗口)对象消耗内存的速度是否足够快? 请参阅列表中的第一个应用程序http://s45.radikal.ru/i109/1003/af/92a389d189e8.jpg http://s45.radikal.ru/i109/1003/af/92a389d189e8.jpg 带有性能计数器的图片链接查看http://s006.radikal.ru/i215/1003/0b/ddb3d6c80809.jpg

如何计算传递给Dictionary构造函数的capacity参数的最大值以避免OutOfMemoryException?

与此相关: System.OutOfMemoryException因为大字典 当我让.NET管理我的字典时,我得到了OutOfMemoryException 。 resize方法抛出的exception。 所以我试图通过提供大量的容量来避免resize。 当然,我试图从int.MaxValue开始,以确保它有助于解决问题。 我计划尽可能多地下降。 但是为int.MaxValue抛出了int.MaxValue 。 我决定进行一些二进制搜索,构造函数接受的容量的第一个值变为int.MaxValue / 32 。 这不仅比我预期的要小,而且还令人困惑。 那么有谁有任何想法为什么? 哦,项目设置设置为使用x64架构。

捕获OutOfMemoryException如何工作?

我对使用try / catch块捕获OutOfMemoryException这一事实感到有些困惑。 给出以下代码: Console.WriteLine(“Starting”); for (int i = 0; i < 10; i++) { try { OutOfMemory(); } catch (Exception exception) { Console.WriteLine(exception.ToString()); } } try { StackOverflow(); } catch (Exception exception) { Console.WriteLine(exception.ToString()); } Console.WriteLine("Done"); 我用来创建OutOfMemory + StackOverflowException的方法: public static void OutOfMemory() { List data = new List(1500); while (true) { byte[] buffer […]

byte 并通过引用有效传递

因此,这与处理大对象堆并尝试最小化实例化byte []的次数有关。 基本上,我有OutOfMemoryExceptions,我觉得这是因为我们实例化了太多的字节数组。 当我们处理几个文件时,程序工作正常,但它需要扩展,目前它不能。 简而言之,我有一个从数据库中提取文档的循环。 目前,它一次拉一个文档然后处理文档。 文件的范围可以从小于1兆欧卡到400欧元不等。 (因此我为什么一次处理一个)。 以下是伪代码,在我进行优化之前。 所以我正在做的步骤是: 调用数据库以查找最大文件大小(然后将其乘以1.1) var maxDataSize = new BiztalkBinariesData().GetMaxFileSize(); maxDataSize = (maxDataSize != null && maxDataSize > 0) ? (long)(maxDataSize * 1.1) : 0; var FileToProcess = new byte[maxDataSize]; 然后我进行另一个数据库调用,从数据库中提取所有文档(没有数据)并将它们放入IEnumerable中。 UnprocessedDocuments = claimDocumentData.Select(StatusCodes.CurrentStatus.WaitingToBeProcessed); foreach (var currentDocument in UnprocessDocuments) { // all of the following code goes here } […]

Newtonsoft.Json – 反序列化大对象时内存不足exception

我有一个问题反序列化大约1GB的JSON文件。 当我运行以下代码时,我得到一个内存不足exception: using (FileStream sr = new FileStream(“myFile.json”, FileMode.Open, FileAccess.Read)) { using (StreamReader reader = new StreamReader(sr)) { using (JsonReader jsReader = new JsonTextReader(reader)) { JsonSerializer serializer = new JsonSerializer(); dataObject = serializer.Deserialize(jsReader); } } } 抛出exception Newtonsoft.Json.Linq.JTokenWriter.WriteValue(Int64 value) 序列化效果很好,这是我正在使用的代码 using (StreamWriter reader = new StreamWriter(“myFile.json”)) { using (JsonReader jsWriter = new JsonWriter(reader)) { JsonTextWriter […]