我是这个网站的新手,所以我希望我不会违反任何不成文的规则......; - )
我编写了一个针对旅行商问题的启发式算法,该问题首先创建了一个最小生成树,将其扩展为创建一个Euler Tour,然后从Euler Tour中获取一个Hamiltoninan Circle。
该程序可以很好地适用于最多约3700个顶点的图形(虽然它需要一些时间,在我的笔记本电脑上大约需要三个小时),但是现在当我尝试解决~4300个顶点的图形时似乎有问题。
MST是一如既往地创建的,但在创建Euler-Tour的某个时刻,CPU似乎在我的程序中“失去了兴趣”。根据Windows任务管理器,java.exe进程使用大约25%的CPU(四个核心之一),同时解决较小的图形,但现在它降至0 - 1%。根据Netbeans IDE,该程序仍在运行,但我不确定如何处理这些信息。
也许我必须克服一些OutOfMemory-Errors(堆空间),我通过强力组合解决了这个问题 - 我允许项目创建一个4090 MB的堆(4 GB RAM) - 以及一些更改对于可能与此无关的代码。
如果有人能给我一个暗示可能是什么问题,我会非常高兴。
此致 菲尔
答案 0 :(得分:0)
这可能是因为你的程序中有一个尚未完成的主题。
你的线程可能还活着,因为它被发送到睡眠状态并且从未被唤醒,或者可能存在死锁。我建议您使用visualvm来确定您的线程是否仍在运行,甚至可以看到程序中的哪个位置从高CPU使用率到低CPU使用率,以及一些日志记录,可能会帮助您弄清楚确切的问题。