Windows 递归代码占用了整个内存 我有一个C++项目,它具有非常递归的功能。此项目在专用计算机上部署和运行时,占用的内存高达12GB。以前,此进程在2GB限制下失败。因此,我在VisualStudio2010平台上将包含20个项目的整个解决方案转换为64位平台。现在

Windows 递归代码占用了整个内存 我有一个C++项目,它具有非常递归的功能。此项目在专用计算机上部署和运行时,占用的内存高达12GB。以前,此进程在2GB限制下失败。因此,我在VisualStudio2010平台上将包含20个项目的整个解决方案转换为64位平台。现在,windows,memory-management,recursion,stack,com+,Windows,Memory Management,Recursion,Stack,Com+,递归代码占用了整个内存 我有一个C++项目,它具有非常递归的功能。此项目在专用计算机上部署和运行时,占用的内存高达12GB。以前,此进程在2GB限制下失败。因此,我在VisualStudio2010平台上将包含20个项目的整个解决方案转换为64位平台。现在,它并没有停止在2GB,而是几乎吃掉了我的整个内存。在总共16 GB的内存中,RAM的总使用量为15.9 GB。我使用COM+作为dllhost运行这些应用程序。我的问题是: 如何限制被完全分配的内存,从而导致进程失败 递归结束后windows

递归代码占用了整个内存

我有一个C++项目,它具有非常递归的功能。此项目在专用计算机上部署和运行时,占用的内存高达12GB。以前,此进程在2GB限制下失败。因此,我在VisualStudio2010平台上将包含20个项目的整个解决方案转换为64位平台。现在,它并没有停止在2GB,而是几乎吃掉了我的整个内存。在总共16 GB的内存中,RAM的总使用量为15.9 GB。我使用COM+作为dllhost运行这些应用程序。我的问题是:

  • 如何限制被完全分配的内存,从而导致进程失败
  • 递归结束后windows是否释放内存?因为在我杀死这个进程之前,我不会看到这个进程释放内存
  • 我想终止案例不是问题,因为我的工作是通过在组件服务中使用过期时间选项成功完成的。或者还有其他问题吗

  • 为了解决这个问题,你首先需要理解这个问题。目前你还不知道出了什么问题。您需要了解系统消耗内存的原因和方式。除非你能做到这一点,否则你不会有任何进展。有没有办法让我知道分配的内存是用于递归期间的堆栈还是用于任何其他目的?事实上,我刚刚得到这个问题的解决。我对这个问题完全陌生。Windows上的典型堆栈大小为1MB。如果您正在消耗16GB内存,那么这不是堆栈上的内存。当然,由于深度递归,它可能是堆内存。或者你的应用程序可能会泄漏。或者有无数其他的解释。这里没有证据表明问题是由递归引起的。在调试过程的早期,您已经问了这个问题。第一步是了解问题。这是你的下一个任务。我们不能帮你做那件事。