【问题标题】:GATE PersistenceManager.loadObjectFromFile outofmemory error while loading .gapp files加载 .gapp 文件时出现 GATE PersistenceManager.loadObjectFromFile 内存不足错误
【发布时间】:2015-05-02 16:19:26
【问题描述】:

使用 PersistenceManager.loadObjectFromFile 从光盘加载 .gapp 文件时,出现“线程“主”java.lang.OutOfMemoryError:Java 堆空间中的异常:Java 堆空间”错误。 我将堆大小增加到最大 2048M 并解决了这个问题。 加载大量 .gapp 文件时,是否有更好的替代方法来解决此问题。

【问题讨论】:

  • 读取“文件” 我怀疑您在同一个 java 应用程序中加载了多个 gapps - 这是很少需要的。 dedek 的建议很好,但我也建议您审查您的架构并将其解耦,以便为每个 gapp 提供不同的 Java 应用程序。

标签: java out-of-memory gate


【解决方案1】:

如果您使用的是默认垃圾收集器,我认为不会。它的工作需要 最大堆大小 参数。请注意,确实需要内存。该错误表示您的门应用程序没有足够的内存(加载的 gapp 文件)。

你可以做两件事:

  1. 找到一个仍然有效的最大堆大小参数值。

  2. 减少所需的内存量。例如,通过在门应用程序之间共享一些大对象(例如地名词典)。可以使用Factory.duplicate(Resource) 来完成。参见例如来自Developers GATE Course 的幻灯片。

【讨论】:

  • 我不完全同意 1。通常,gate 会为每个文档创建大量注释,尽管您可能正在“释放”文档,但堆大小的边界量会导致 GC 运行更频繁。更不用说,如果您将堆大小设置为刚好足以让 gapp 加载,那么大文档可能会导致“内存不足”错误。
猜你喜欢
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 2016-01-06
相关资源
最近更新 更多