代码中罕见的无限循环,不想等待它再次发生

好吧,所以我有一个在netbeans中运行的遗传算法,它运行了5个小时,似乎进入了无限循环。 有什么方法可以附加调试器吗? 或者至少得到一些关于它在代码中的位置的线索? 在我等待它再次发生的时候,我宁愿不再坐5个小时。

从正在运行的程序中获取一些基本信息的一种简单方法是在其上运行jstack ,它将打印代码中所有线程的堆栈跟踪。 做了好几次,你应该知道出了什么问题。

使用jps找出你的JVM的id,然后使用带有该ID的jstack

 $ jps 10664 Jps 7141 org.eclipse.equinox.launcher_1.2.0.v20110124-0830.jar $ jstack 7141 

如果您更喜欢GUI应用程序, VisualVM会提供类似的信息。