【问题标题】:"Exception of type 'System.OutOfMemoryException' was thrown" when compiling several projects at once一次编译多个项目时,“抛出了‘System.OutOfMemoryException’类型的异常”
【发布时间】:2015-09-08 02:27:58
【问题描述】:

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

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

出现这种错误的原因是什么以及如何处理?

【问题讨论】:

  • IDE 的已知问题。实施得不是很好。变通方法包括逐个编译项目和使用 msbuild 外部进程构建。 Delphi 10 Seattle 中主要解决的问题。
  • 我在此之后关闭 IDE,重新打开,然后在当前为粗体的项目上“从此处构建”(这是先前构建因错误而停止的位置)。

标签: delphi out-of-memory delphi-xe5


【解决方案1】:

Delphi IDE 在管理内存方面存在一些问题,Embarcadero 从未真正解决过这些问题,其中一个主要问题是 IDE 和编译器由于内存消耗巨大 到编译运行之间未释放的缓存。

我已成功应用我的代码库的一种解决方法是使用 ANT 等工具使用 dcc 编译器从命令行编译所有项目,这将节省 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 版本。

【讨论】:

  • 幕后工作是他们轻弹了大地址感知开关!慢慢地向我拍手。
猜你喜欢
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 2013-08-28
  • 2015-07-18
相关资源
最近更新 更多