Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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# 在一台电脑上更可能出现.NET StackOverflow异常_C#_.net_Wpf_Stack Overflow - Fatal编程技术网

C# 在一台电脑上更可能出现.NET StackOverflow异常

C# 在一台电脑上更可能出现.NET StackOverflow异常,c#,.net,wpf,stack-overflow,C#,.net,Wpf,Stack Overflow,我们有一个.NET 4.0 WPF客户端应用程序,每天在数百台客户端PC/服务器上下载和执行 我们最近让一位客户打电话给我们的支持热线,报告我们的一个例行程序出现错误。经过更仔细的调查,我发现这台机器在执行我们的递归算法时似乎更容易遇到StackOverflow异常 与另一台拥有完全相同数据集的机器一样,可以通过30次递归迭代来完成算法,在这台机器上,它每次都会失败,然后再进行那么多 (1) 某台机器(或操作系统配置)是否更有可能遇到堆栈溢出异常?为什么一台机器在30次迭代之前失败,而另一台机器

我们有一个.NET 4.0 WPF客户端应用程序,每天在数百台客户端PC/服务器上下载和执行

我们最近让一位客户打电话给我们的支持热线,报告我们的一个例行程序出现错误。经过更仔细的调查,我发现这台机器在执行我们的递归算法时似乎更容易遇到StackOverflow异常

与另一台拥有完全相同数据集的机器一样,可以通过30次递归迭代来完成算法,在这台机器上,它每次都会失败,然后再进行那么多

(1) 某台机器(或操作系统配置)是否更有可能遇到堆栈溢出异常?为什么一台机器在30次迭代之前失败,而另一台机器在30次迭代之后失败?是否有其他东西占用了“堆栈”中的空间

在一个可能相关的注释中,该客户的错误日志在尝试单击按钮、打开对话框等时填写了“没有足够的配额可用于处理此命令”异常

(2) 这两个错误是否有共同的原因

操作系统是Windows Server 2012

更新
我遇到了,这看起来肯定有可能发生。我仍然无法确定哪个设置可能导致此问题。

堆栈是一个有限的资源,您可能需要使用特定的数据集查看递归算法,以查看是否存在异常的递归深度问题。他们的记录可能有循环引用

可用内存量与此无关。NET应用程序的默认堆栈大小为1MB。如果怀疑只缺少一点,并且没有循环引用,可以使用EDITBIN.EXE()更改程序集的堆栈大小


如果存在内存配额,则需要查看针对存在问题的特定用户实施该配额的组策略。问题可能是服务器端的配置错误。

我认为“大量的物理内存”可能与该机器上运行的无意义以及占用的RAM有关。我真的不知道堆栈溢出发生在哪里。它是在服务器代码中还是在客户端代码中?如果是客户机代码,则服务器上的内存量无关紧要。递归算法是客户机代码,但客户机(在本例中)运行在服务器类计算机上。您所说的“内存配额”是什么意思这会产生怎样的影响?在服务器操作系统上,您可以定义特定于用户/组的和计算机范围的组策略,定义磁盘和内存配额。内存配额对于应用程序或用户来说可能太低,这可能是日志中配额错误的来源。