我的问题是80000的问题,但是当我超过这个限制时我卡住了,
Optaplanner中使用的问题大小是否有限制?
这是什么限制?
当我超过此限制(80000)
时,我收到了Java堆异常答案 0 :(得分:1)
要考虑一些想法:
1)为JVM提供更多内存:-Xmx=2G
2)使用更有效的数据结构。 80k实例很容易融入小内存。我敢打赌,你在两个系列之间有某种交叉矩阵。例如,20k VRP位置的距离矩阵需要(20k)² = 400m
个整数(每个至少4个字节),因此它需要几乎2GB的RAM才能以最有效的形式(数组)保存在内存中。 使用分析器(如JProfiler或VisualVM)找出哪些数据结构占用了大量内存。
3)阅读关于“计划克隆”的章节。有时在Job和JobAssignment中分割Job可以节省内存,因为只需要克隆JobAssignment,而在另一种情况下,引用Job的所有内容也需要克隆计划。