一次编译多个项目时,抛出“ System.OutOfMemoryException类型的异常”

Apt*_*tem 5 delphi out-of-memory delphi-xe5

我使用Embarcadero Delphi XE5企业版。我有一个由17个项目组成的项目组。当我在第七个已编译项目IDE之后单击“全部编译”时,抛出异常:

[Fatal Error] Exception of type 'System.OutOfMemoryException' was thrown.
Run Code Online (Sandbox Code Playgroud)

这种错误的原因是什么?如何处理?

ale*_*oot 5

Delphi IDE有一些内存管理问题,Embarcadero从未真正解决过,主要问题之一是IDE和编译器由于在编译运行之间未释放缓存而消耗了大量内存。

我已成功在我的代码库中应用的一种变通方法是使用dcc编译器使用ANT之类的工具从命令行编译所有项目,这将节省IDE内存。如果需要调试应用程序,则可以及时编译和构建项目,然后每2/3编译重新启动IDE。

我已在Delphi XE7中成功应用以减少IDE内存消耗的另一个解决方法是重命名以下IDE文件:

  • Borland.Studio.Delphi.dll
  • Borland.Studio.Refactoring.dll
  • refactoride210.bpl

这使XE7 IDE再次可用。只是重构功能不再可用。

如果上述解决方案对您不起作用,您将不得不将您的项目组划分为单个项目,并在每次其他人建议评论您的问题时在项目之间切换。

新的Delphi 10 Seattle似乎解决了其中一些与内存相关的问题,因为它们声称:

IDE的“内幕”已经进行了大修和重新设计,以提供显着扩展的可用内存,从而为开发人员提供了更稳定,更强大,更快的开发体验。

但老实说,我认为这不是最终的解决方案,只是情况的改善。这种情况的最终解决方案是使用64位IDE,这对他们来说并不是一件容易的事,因为我认为他们必须处理传统的代码,而不是非常灵活的代码库。

尝试使用新的Delphi 10,看看情况是否有所改善,如果不解决,请等待64位IDE发布。

  • 后台工作是他们轻按了大地址感知开关!慢拍手从我身上鼓掌。 (4认同)