我们已经发现,我们的一个自动产生的议会投掷一StackOverflowException上新的().这类具有(原谅我请)400多个简单的属性,初始化(大多数通过默认(string)等)在一个构造。

我们注意到,它现在64位但是32位的它会爆炸!

我们需要试验,如果它是合理的,我们的使用情况创造一个更大的默认叠给我们呼吸的空间,同时我们重新设计代码生成器。

我们将esp。感兴趣的解决方案涉及应用程序。config如果可能的。但我是个现实主义者所以任何事情将是好的。

重新原因,堆超过流动。我们已经缩小的错误下构造中的问题。我的第一印象也有类型的无限递归。然而,我们再现的错误使用3行控制台应用程序:

  • 创建一个空的实例类。
  • 呼吁非静态的方法(克隆)上班的第一工作是建立和空实例准备通过特性。

它会爆炸,因为它击的第二个构造。

现在调试通过。净的源代码,我们看到,堆叠的溢出是在Guid。NewGuid()其是通过了作为第二个参数的构造。实际代码行被呼叫的地CoCreateGuid()call.

因此,尽管它可能是一个错误,在CoCreateGuid(),我们要消除我们的代码问题。我首先想到的是增大堆大型和看到如果这种错误的重新出现。然后,因为我认为我们能控制所有用途的情况下,被更换的构造与对象的初始认为这可以缓解压力。

Nb。我们可以阻止的错误发生,通过删除只是在int财产的类。

有帮助吗?

解决方案

你可以 使用 editbin 改变堆尺寸为可执行的。你不能这样在应用程序。config作为我知道。

另一选项(还提到在那页)是创建一个新的螺纹与"正确"的堆大小。该网页提到的利弊,这种做法。

我会惊讶如果只是设置400性的构造是问题的原因虽然...那将会是 一个 大堆的框架,但除非你已经有了 几个 大堆框堆,我希望它是好的。其他可能是你有无尽的递归的地方:)

编辑:一个替代建议...

想必你有很多地方的变量,在这种构造?(否则不应采取任何更多的堆比任何其他呼吁。) 是否有可能分割的构造成多方法、设置(说)20场,每种方法?那将会非常棘手,如果领域是只读的,不可否认.

如果你能给我们一个想法是什么看起来像构造,这将有很大的帮助。你也可能想要使用ildasm看到什么它的权利要求的堆大小会为,构造。

只是为了检查,这个 一类,而不是一个结构,对吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top