多线程环境下OptaPlanner出现内存泄漏是否需要提交官方issue?
排查优先级说明
先完成以下配置核对,确认非配置问题后再提交官方issue:
需核对的配置项
- 版本核验:旧版OptaPlanner(8.20.0.Final之前的版本)存在已知的多线程求解场景下
PhreakPropagationContext内存泄漏问题,先确认你当前使用的Quarkus版本关联的OptaPlanner版本,升级到最新稳定版后再次尝试复现问题。 - 环境模式校验:检查
application.properties中是否配置了quarkus.optaplanner.solver.environment-mode为DEBUG/TRACE,调试级别的环境模式会留存全量求解上下文用于问题定位,本身就会导致内存持续上涨,不属于异常,生产环境需设置为默认的REPRODUCIBLE或NON_REPRODUCIBLE模式。 - 求解生命周期校验:确认你发起的
solve请求没有被重复触发未终止,Quarkus集成的OptaPlanner默认会管理Solver实例生命周期,单任务场景下不会出现实例泄漏。
符合以下情况可直接提交官方issue
完成上述配置核对后,仍然可以稳定复现内存持续上涨、大量PhreakPropagationContext对象未被GC的情况,直接提交issue即可,提交时附带以下信息:
- 你使用的Quarkus、OptaPlanner完整版本号
- 你修改后的完整
application.properties配置 - 堆内存分析的相关结果,比如对象统计、GC root引用链信息
内容的提问来源于stack exchange,提问作者FrederikVds
相关产品推荐
相关产品推荐

