【问题标题】:Memory leak in multithreaded Optaplanner?多线程 Optaplanner 中的内存泄漏?
【发布时间】:2021-11-26 17:06:44
【问题描述】:

我似乎在 Optaplanner 中遇到了内存泄漏。要重现,只需下载 Quarkus 示例:

git clone https://github.com/quarkusio/quarkus-quickstarts.git
cd quarkus-quickstarts/optaplanner-quickstart

然后更改src/main/resources/application.properties,增加终止时间(例如更改为quarkus.optaplanner.solver.termination.spent-limit=10h)并取消注释quarkus.optaplanner.solver.move-thread-count=2 以启用多线程。

然后,运行手册中的请求:

./mvnw compile quarkus:dev
curl -i -X POST http://localhost:8080/timeTable/solve -H "Content-Type:application/json" -d '{"timeslotList":[{"dayOfWeek":"MONDAY","startTime":"08:30:00","endTime":"09:30:00"},{"dayOfWeek":"MONDAY","startTime":"09:30:00","endTime":"10:30:00"}],"roomList":[{"name":"Room A"},{"name":"Room B"}],"lessonList":[{"id":1,"subject":"Math","teacher":"A. Turing","studentGroup":"9th grade"},{"id":2,"subject":"Chemistry","teacher":"M. Curie","studentGroup":"9th grade"},{"id":3,"subject":"French","teacher":"M. Curie","studentGroup":"10th grade"},{"id":4,"subject":"History","teacher":"I. Jones","studentGroup":"10th grade"}]}'

在创建数百万个 PhreakPropagationContext 对象时,内存使用量开始稳步增加。我认为这不是预期的行为。我应该为此创建一个问题还是我遗漏了什么?

【问题讨论】:

  • 如果没有使用内存,这只是泄漏。计算完成后会发生什么?系统再次空闲时是否会回收内存?编辑:quarkus.io/guides/optaplanner 建议将搜索限制为 5 秒,因此当您让它运行 10 小时时,它自然会消耗更多资源。
  • 我无法重现该问题。我让应用程序运行了 5 分钟,我所看到的只是内存使用中一个干净整洁的“电锯”模式,使用的最大堆从未超过 500 MiB。
  • @LukášPetrovicý 你能检查一下 PhreakPropagationContext 对象的数量吗?它们非常小,因此很难在短短五分钟内看到它们对内存使用的影响。对我来说,堆大小在大约 40 分钟后才超过 500 MB,但它一直在稳步上升,大约 15 分钟后清晰可见。见imgur.com/ASSVLaU。请注意大约下午 4:20 之后的手动 GC 触发,它无法清理大部分内存。大约一个小时后,我有 500 万个 PhreakPropagationContext 对象。我真的不知道它们是什么,但这似乎是一个很高的数字。
  • 所以我让它运行更长时间(约 15 分钟),而且堆使用量的增加似乎非常缓慢,但未被回收。这真的没有理由发生。罪魁祸首似乎确实是 PhreakPropagationContext,这将指向 Drools 中的泄漏。
  • 请提交一份 PLANNER JIRA,我们必须在向 Drools 人展示之前进行更多调查。

标签: java memory-leaks quarkus optaplanner


【解决方案1】:

我查看了您的问题,调查了问题并最终选择了filing a bug。该修复程序计划包含在 OptaPlanner 8.13.0.Final 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 2013-12-18
    • 2021-05-23
    • 2018-12-18
    • 2020-05-23
    • 1970-01-01
    • 2017-02-04
    相关资源
    最近更新 更多