delphi - "Exception of type ' System.OutOfMemoryException ' was thrown"一次编译多个项目时

标签 delphi out-of-memory delphi-xe5

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

[Fatal Error] Exception of type 'System.OutOfMemoryException' was thrown.

此错误的原因是什么以及如何处理?

最佳答案

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似乎解决了一些与内存相关的问题,因为他们声称:

“Under the hood” the IDE’s project, file, and build management handling has gone through a major overhaul and redesign to provide significantly extended available memory, giving developers a more stable, capable, and faster development experience.

但老实说,我不认为这是最终的解决方案,只是情况的改善。这种情况的最终解决方案是 64 位 IDE,这对他们来说并不是一件容易实现的事情,因为我认为他们必须处理遗留且不太灵活的代码库......

尝试新的 Delphi 10,看看情况是否有所改善,如果没有,请应用解决方法并等待 64 位 IDE 版本。

关于delphi - "Exception of type ' System.OutOfMemoryException ' was thrown"一次编译多个项目时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32448347/

相关文章:

delphi - Delphi 应用程序托盘图标上的气球提示不断弹出

xml - 创建不带命名空间的 XML 元素

Embarcadero XE5 中的 Android NFC

delphi - Delphi XE5 Shell执行非英文字符

delphi - 为什么像 "Point"/"Rect"/"Bounds"(等)这样的函数同时在类和类型单元中声明?

delphi - 在 Delphi 10.2 中写入 MemoryStream 有何变化?

android - 方向更改时应用程序崩溃(就在我为纵向和横向模式设置 2 个不同的背景时)

java - 如何修复 java.lang.OutOfMemoryError : Java heap space error?

Java 字符串内存泄漏 II

android - 如何使用 FireMonkey for Delphi XE5 检测/处理屏幕旋转