Tag: memory

程序占用太多内存

我正在使用WPF来开发康威生命游戏的模拟器。 出于某种原因,有时程序需要高达400,000K的内存(当我快速绘制很多单元格时)。 如何减少内存使用量和/或减少由此引起的滞后。 编辑1:主窗口代码: http : //pastebin.com/mz0z7tBu 网格类: http : //pastebin.com/ZHX1WBuK 细胞结构: struct Cell { public int Neighbors {get; set;} public bool Alive { get; set; } } 编辑2:我将尝试解释程序结构:单元格是一个结构,包含类型为int的AutoProperty邻居,以及类型为bool的AutoProperty IsAlive。 CellGrid是一个包装2D数组Cell的类。 每次迭代时,每个Cell的Neighbors属性都会更新为包含Neighbors活动的数量,然后每个Cell的IsALive设置为true或false,取决于邻居的数量和之前的IsAlive状态。 MainWindow类有一个CellGrid类型的对象。 它将网格呈现在屏幕上。 编辑3: XAML: http : //pastebin.com/Zp3dr8zc resources.xaml:

为什么.net在初始化2d数组时没有分配内存?

var a = new double[7000,7000]; FillValue(a,3); 似乎.Net在执行第一行后实际上并没有为a分配任何内存。 只有在运行FillValue调用时才会逐渐占用内存。 (约400MB) 任何人都可以向我提供有关它的更多细节吗? 在默认初始化之后,我认为a填充为0,怎么可能根本没有内存?

String和Char类型如何在.NET中存储在内存中?

我需要存储一个语言代码字符串,例如“en”,它总是包含2个字符。 将类型定义为“String”或“Char”更好吗? private string languageCode; VS private char[] languageCode; 或者还有另一种更好的选择吗? 这些2如何存储在内存中? 分配值时,将为它们分配多少字节或位?

尝试读取或写入受保护的内存。 当我调用openfileDialog的showDialog方法时

最近在我的项目中,当我调用OpenFileDialog ShowDialog方法时,我收到此错误: “试图读取或写入受保护的内存。这通常表明其他内存已损坏。” 我之前一直在网上搜索,但我的问题没有解决。 我也安装了microsoft补丁,但因为我的项目是在.Net 3.5中,所以没用。 代码示例: OpenFileDialog OFD = new OpenFileDialog(); OFD.ShowDialog(); 谢谢你的帮助。

使用任何CPU集编译C#应用程序可以处理大(> 2GB)地址

我在性能测试期间遇到了这个问题。 使用x86 platform标志编译C#Console应用程序时,未设置Large Address Aware标志: dumpbin / headers app.exe的输出: Dump of file app.exe PE signature found File Type: EXECUTABLE IMAGE FILE HEADER VALUES 14C machine (x86) 3 number of sections 569F0089 time date stamp Tue Jan 19 21:35:37 2016 0 file pointer to symbol table 0 number of symbols E0 size of optional header 102 […]

HttpClientHandler / HttpClient内存泄漏

我有10到150个长生命类对象,可以调用使用HttpClient执行简单HTTPS API调用的方法。 PUT调用示例: using (HttpClientHandler handler = new HttpClientHandler()) { handler.UseCookies = true; handler.CookieContainer = _Cookies; using (HttpClient client = new HttpClient(handler, true)) { client.Timeout = new TimeSpan(0, 0, (int)(SettingsData.Values.ProxyTimeout * 1.5)); client.DefaultRequestHeaders.TryAddWithoutValidation(“User-Agent”, Statics.UserAgent); try { using (StringContent sData = new StringContent(data, Encoding.UTF8, contentType)) using (HttpResponseMessage response = await client.PutAsync(url, sData)) { using (var content […]

有趣的OutOfMemoryException与StringBuilder

我需要在循环中不断构建大字符串并将它们保存到数据库中,目前偶尔会产生OutOfMemoryException 。 这里基本上是基于一些数据使用XmlWriter和StringBuilder创建一个字符串。 然后我从外部库调用一个方法,将该xml字符串转换为其他字符串。 之后,转换后的字符串将保存到数据库中。 对于不同的数据,这整个过程在一个循环中重复完成约100次。 字符串本身不是太大(每个低于500kBy)并且在此循环期间进程内存不会增加。 但是,偶尔我会在StringBuilder.Append得到一个OutOfMemeoryExcpetion 。 有趣的是,此exception不会导致崩溃。 我可以捕获该exception并继续循环。 这里发生了什么? 尽管系统中仍有足够的可用内存,为什么我会得到一个OutOfMemoryException ? 这是一些GC堆问题吗? 鉴于我无法绕过转换所有这些字符串,我能做些什么来使这项工作可靠? 我应该强制GC收集吗? 应该将Thread.Sleep放入循环中吗? 我应该停止使用StringBuilder吗? 应该只是在面对OutOfMemoryException时重试?