C# 类型为'的首次机会例外;System.OutOfMemoryException';发生在mscorlib.dll中
我对C#不熟悉,正在尝试读取包含地震数据的.sgy文件。我找到了一个名为plugged.SEGY的库来读取该文件。我的文件是4.12Gb,我得到“mscorlib.dll中发生了'System.OutOfMemoryException'类型的第一次意外异常”,然后程序突然停止。这是我的密码C# 类型为'的首次机会例外;System.OutOfMemoryException';发生在mscorlib.dll中,c#,C#,我对C#不熟悉,正在尝试读取包含地震数据的.sgy文件。我找到了一个名为plugged.SEGY的库来读取该文件。我的文件是4.12Gb,我得到“mscorlib.dll中发生了'System.OutOfMemoryException'类型的第一次意外异常”,然后程序突然停止。这是我的密码 using System; using Unplugged.Segy; namespace ABC { class abc { stati
using System;
using Unplugged.Segy;
namespace ABC
{
class abc
{
static void Main(String[] args)
{
var reader = new SegyReader();
ISegyFile line = reader.Read(@"D:\Major\Seismic.sgy");
ITrace trace = line.Traces[0];
double mean = 0;
double max = double.MinValue;
double min = double.MaxValue;
foreach (var sampleValue in trace.Values)
{
mean += sampleValue / trace.Values.Count;
if (sampleValue < min) min = sampleValue;
if (sampleValue > max) max = sampleValue;
}
Console.WriteLine(mean);
Console.WriteLine(min);
Console.WriteLine(max);
}
}
}
使用系统;
使用不插电的.Segy;
名称空间ABC
{
abc班
{
静态void Main(字符串[]参数)
{
var reader=new SegyReader();
ISegyFile line=reader.Read(@“D:\Major\Seismic.sgy”);
ITrace trace=line.Traces[0];
双平均值=0;
最大值加倍=最小值加倍;
double min=double.MaxValue;
foreach(trace.Values中的var sampleValue)
{
平均值+=采样值/trace.Values.Count;
如果(采样值<最小值)最小值=采样值;
如果(采样值>最大值)最大值=采样值;
}
控制台写入线(平均值);
控制台写入线(最小值);
控制台写入线(最大值);
}
}
}
请帮帮我
编辑:我将应用程序作为64位进程运行因为您是以64位运行的(并且只要您是在.NET 4.5+)我建议确保将
gcAllowVeryLargeObjects
标志设置为true
在.NET中,可以在32位应用程序中使用各种大小,每个进程的上限为2-4 GB。64位应用程序在每个进程中可能消耗更多的内存
但是,;在32位和64位中,单个对象最多只能消耗2GB
但是,;从4.5及更高版本开始,为了再次超越这一最终声明,您可以标记配置以允许大于2GB的对象
我的最后一个想法是,需要在你的处境中设置旗帜
要使.NET进程大于4GB,它必须是64位进程。
要使单个对象大于2GB,它必须是运行.NET 4.5或更高版本的64位进程,并且
gcAllowVeryLargeObjects
标志设置为true
错误。对于32位进程,内存总量(不适用于单个对象)不能大于2gb。对于单个对象,两种体系结构上的最大大小均为2gb。64位进程上允许的最大内存为1tb,@M.kazemAkhgary 32位进程在x64机器上最多可使用4GB。。。(另外一个很好的观点是这个答案充其量是非常误导的)我试着以64位运行它,但它没有给我任何输出,相反,我的电脑被挂断了。你能检查一下代码,让我知道这里面有什么错误吗?另外,仅供参考,我正在Windows 8上使用4Gb RAM 64位操作系统运行此应用程序。Michael PuckettII-请避免在帖子讨论中添加不相关的文本-为什么对帖子进行编辑对解决问题毫无价值。旁注:编辑没有使文章中的信息正确,也没有使答案看起来像答案。。。如果您不确定(“尝试此…”)-请将其作为注释发布。您是否尝试在内存超过4GB的计算机上运行此功能?我认为您无法在此处获得更多帮助-您已经运行了x64,因此您需要询问库作者有关加载部分文件的事宜,或者获得相当数量的内存(如果您需要处理如此大量的数据,我会从16gb开始)。。