我有一个在Windows下编写的java程序,它运行得很好。基本上是与算法相关的,在运行过程中通常会消耗几乎全部的CPU容量,这是正常的。
但是在MacOS下总是会卡在某个特定的点,数据量很大,内存消耗达到240M左右。该程序仍在运行,但不再继续。内存没有释放但是CPU使用率下降到0。我不知道这到底意味着什么,我也不知道发生了什么。
抱歉,我无法提供代码片段,因为这不是代码特定部分的问题。任何熟悉 JVM 的人都可以提供一些提示/建议吗?
最佳答案
我要做的第一件事就是进行线程转储并找出谁在做什么。您可以发出 kill -3
来获取线程转储,或者您也可以连接分析器。详情请看这个回答:Thread Dump Analysis Tool / Method
如果您无法弄清楚发生了什么,您可能想在此处发布线程转储。
我的疯狂猜测是一个并发错误,比如死锁,但我们必须查看线程转储!
关于Java程序在Windows下运行但在Mac OS JVM中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12397741/