Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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#_.net_Large Object Heap - Fatal编程技术网

C#大型对象初始值设定项引发堆栈溢出错误

C#大型对象初始值设定项引发堆栈溢出错误,c#,.net,large-object-heap,C#,.net,Large Object Heap,我需要构建一个对象,它几乎由20000个嵌套对象组成(在多个级别中)。每个对象都是一个简单的数据库实体,具有1-5个字段或实体列表。我正在使用内联对象初始值设定项启动根对象 new OUTPUT() { XREF_CATALOG_MATERIALS = xrefCatalogMaterials.Find(x => x.MATERIAL.PART_NUM.Equals("xxxx")), FUNCTION = new FUNCTION() {... 我尝试在x86和x64模式下运行,在这两

我需要构建一个对象,它几乎由20000个嵌套对象组成(在多个级别中)。每个对象都是一个简单的数据库实体,具有1-5个字段或实体列表。我正在使用内联对象初始值设定项启动根对象

new OUTPUT() { XREF_CATALOG_MATERIALS = xrefCatalogMaterials.Find(x => x.MATERIAL.PART_NUM.Equals("xxxx")), FUNCTION = new FUNCTION() {...
我尝试在x86x64模式下运行,在这两种情况下都出现堆栈溢出异常。同样的代码和逻辑适用于我的对象没有那么大的其他情况(大约6000个嵌套对象)


有没有办法增加.Net应用程序堆大小?有什么建议可以用来解决这个问题吗?

从描述中可以看出,堆大小没有问题。堆栈大小有问题。看起来您试图调用太多嵌套函数。每个函数调用都会对堆栈产生影响。 堆栈比堆小得多,并且相对容易溢出。最简单的方法是递归


你最好只装你需要的东西,因为你需要它。我觉得每次加载20000个对象时都需要所有对象是很可疑的。增加堆栈大小(不是堆大小,也不是堆溢出)似乎不是一个很好的解决方案。问题在于设计,而不是主机系统。你有太多的嵌套函数调用。@krillgar我同意设计有问题,我从另一个开发人员那里继承了代码,并希望在可能的情况下快速修复。这总是很有趣,听到这个消息我很难过。你最好的办法是多花点时间(这可能是一个巨大的代价)把事情做好。向你的主管请愿,否则你将花费10倍的努力来修复其他的bug,这些bug会在以后的某个时候突然出现。
StackOverflowException is thrown for execution stack overflow errors, typically in case of a very deep or unbounded recursion.