保存计划结果时,optaplanner堆栈溢出异常

时间:2016-05-09 21:42:02

标签: xstream optaplanner

当我尝试为665个客户保存滑行车路由结果时(使用“另存为...”按钮)我得到堆栈溢出异常:

Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError: null
    at com.thoughtworks.xstream.mapper.MapperWrapper.isImmutableValueType(MapperWrapper.java:42)
    at com.thoughtworks.xstream.mapper.MapperWrapper.isImmutableValueType(MapperWrapper.java:42)
    at com.thoughtworks.xstream.mapper.MapperWrapper.isImmutableValueType(MapperWrapper.java:42)
    at com.thoughtworks.xstream.mapper.MapperWrapper.isImmutableValueType(MapperWrapper.java:42)
    at com.thoughtworks.xstream.mapper.MapperWrapper.isImmutableValueType(MapperWrapper.java:42)
    at com.thoughtworks.xstream.mapper.MapperWrapper.isImmutableValueType(MapperWrapper.java:42)
    at com.thoughtworks.xstream.mapper.MapperWrapper.isImmutableValueType(MapperWrapper.java:42)
    at com.thoughtworks.xstream.mapper.MapperWrapper.isImmutableValueType(MapperWrapper.java:42)
    at com.thoughtworks.xstream.mapper.MapperWrapper.isImmutableValueType(MapperWrapper.java:42)

10个(或更多)客户少于(655或更少)它正常工作。任何想法有什么不对

异常在不同的情况下看起来不同,起初我认为它是一些奇怪的角色(它驱动xml序列化疯狂 - 因为它是调用堆栈上的xml序列化方法),所以我用id替换了所有地址。我认为可能是节点区域中的地址没有单一的名称 - 但事实并非如此。我也尝试了32位和64位java,但这并没有帮助。

最后一次尝试的完整堆栈在这里https://dl.dropboxusercontent.com/u/10874009/stack-overflow-exception.txt 这是我的vrp文件的zip,异常是100%可重复使用的数据集https://dl.dropboxusercontent.com/u/10874009/generated-n666-k36.zip

我使用的是二进制文件:optaplanner-distribution-6.4.0.Final 提前谢谢

1 个答案:

答案 0 :(得分:1)

一旦VRP数据集变为特定大小,链表结构就会在XStream中触发堆栈溢出。在这种规模下,XML格式也变得非常冗长:例如,XML格式的10k客户可以占用GB的磁盘空间...最好在将大案件持久化到磁盘时将其导出为txt格式(或将其存储在数据库中)。请参阅VehicleRoutingSolutionFileIO