C#Huge对象初始化程序抛出Stack Overflow错误

时间:2016-04-27 19:06:02

标签: 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 模式下运行,在这两种情况下,我都得到 stackoverflow异常。相同的代码和逻辑在我的对象不是那么大(大约6000个嵌套对象)

的其他情况下工作正常

有没有办法增加.Net applicationheap大小?我可以用什么建议来解决这个问题?

1 个答案:

答案 0 :(得分:4)

根据该描述,您不会遇到堆大小问题。你有堆栈大小的问题。看起来你正试图调用太多嵌套函数。每个函数调用都会对堆栈产生影响。 堆栈比堆小得多,并且它相对容易溢出。最简单的方法是递归。

https://msdn.microsoft.com/en-us/library/system.stackoverflowexception(v=vs.110).aspx

StackOverflowException is thrown for execution stack overflow errors, typically in case of a very deep or unbounded recursion.