Java 解决:JVM永远挂起,没有CPU使用或I/O

Java 解决:JVM永远挂起,没有CPU使用或I/O,java,linux,ubuntu,intellij-idea,Java,Linux,Ubuntu,Intellij Idea,我遇到了一个奇怪的问题,JVM经常挂起 当我的JavaIDE经常挂起整个系统GUI时,我第一次发现了这个问题。IntelliJ IDEA几乎每次启动时都会挂起索引。有时它会继续解决依赖关系,但最终总是挂起。发生这种情况时,我可以输入gnome终端,但命令似乎无法执行。我不能用Alt-F2或类似的东西启动新的应用程序 我不得不切换到一个文本控制台,并杀掉ALL-9Java来杀掉IDEA进程并重新获得控制权。kill-3java无法工作。日志文件不包含任何相关内容,线程转储为空。一旦IDE挂起,js

我遇到了一个奇怪的问题,JVM经常挂起

当我的JavaIDE经常挂起整个系统GUI时,我第一次发现了这个问题。IntelliJ IDEA几乎每次启动时都会挂起索引。有时它会继续解决依赖关系,但最终总是挂起。发生这种情况时,我可以输入gnome终端,但命令似乎无法执行。我不能用Alt-F2或类似的东西启动新的应用程序

我不得不切换到一个文本控制台,并杀掉ALL-9Java来杀掉IDEA进程并重新获得控制权。kill-3java无法工作。日志文件不包含任何相关内容,线程转储为空。一旦IDE挂起,jstack就不能附加到进程。jstack-LPID也挂起。jstack-F pid无法附加到进程。Visualvm也挂起

Java进程的CPU使用率为0%,并且没有进行I/O

我在使用Eclipse时观察到了相同的行为。有时在启动时挂起,有时在保存时挂起,有时在运行Java应用程序时挂起

在纯文本TTY中执行的Maven/sbt构建会导致相同的挂起,因此我猜这不是窗口管理器/桌面环境/显示驱动程序的问题

我高度怀疑这是文件系统或I/O问题,但我不知道如何调试它。我尝试过fsck,但运气不好,我的系统在不运行java程序的情况下运行得非常好

我已经排除的事情:

权限问题:用sudo运行IntelliJ没有帮助,100%的时间挂起。 显示驱动程序:我已经尝试了英伟达专有驱动程序和新版本的开源软件。没用。 窗口管理器/桌面环境:我使用肉桂,但我尝试在Unity下运行IntelliJ。没用。 Java版本:我试过Oracle Java 7和Oracle Java 8。我可能会尝试OpenJDK,但我怀疑它是否会起作用。 IntelliJ版本:我试过IntelliJ 13到14.1。所有人都表现出相同的行为。 内存有限:我有16G内存和16G交换空间,所以内存不应该是一个限制因素。 内核日志看起来不可疑。我无法远程获取任何类型的日志来指示出哪里出了问题

有什么想法吗

更新2015/04/29:在我不小心踢了电源线并冷重启计算机后,问题似乎已经自行解决了。。。仍然是一个谜,但是IntelliJ现在还可以使用。

需要检查一些东西 -JavaIDE在有大量ram的情况下运行得最好。我通常要求至少 8G内存用于我的开发人员工作站。 -确保你有一个稳定的版本,在Ubuntu上寻找已知的工作版本/配置 -您必须手动分配IntelliJ IDEA版本<14的内存。例如:
-除了系统日志之外,运行top之类的工具,看看在运行IDE时cpu和ram发生了什么情况。我不久前也遇到过类似的问题,但是Eclipse出现了类似的问题。问题是根本没有交换的地方;-显然,16GB的RAM不会有问题

您可以发布Intellij的JVM参数吗?我还想创建另一个Intellij安装,比如回到14版本,看看是否有类似的问题,并比较这两个版本之间的JVM设置

编辑 好的,那么试试:

使用不同的JRE/JDK。如果问题消失,它会告诉我们更多

您使用的是linux,因此可以很容易地监视几件事情—您说过没有CPU利用率或硬I/O。但您怎么知道这一点?收集一些统计数据可能会提供一些信息,例如JVM本身的jstat或您认为是I/O问题的系统信息,请尝试:

iostat-hm-psda 1


如果您有不同的光盘,它将打印sda的I/O统计信息。1秒循环中的设备参数也可以更改。从系统开始,将输出转储到文件中——可能在JVM挂起之前发生了某种“灾难”。注意:iostat有时在我的Linux上的系统本身上不可用Mint is not-安装后,软件包sysstat和命令将可用。

在意外断电冷重启后似乎已修复。。这是我见过的最奇怪的问题。

也许这是一个好问题?有远程安装的文件系统吗?@realpoint没有,所有东西都在本地驱动器上。谢谢。我有16G内存,所以应该足够了。我正在使用IntelliJ IDEA 14.1,所以我认为手动分配是不必要的。此外,没有交换/打击。挂起后,Java进程根本不使用CPU和RAM。我只是使用IntelliJ安装附带的默认参数-Xms128m-Xmx750m-XX:MaxPermSize=350m-XX:ReservedCodeCacheSize=225m-XX:+UseConMarkSweepGC-XX:SoftRefLRUPolicyMSPerMB=50-ea-Dsun.io.UseConCaches=false-Djava.net.preferIPv4Stack=true-Dawt.useSystemAAFontSettings=LCD但提供的值相当小。我会尝试增加它们,只是为了确保每一个都加倍,甚至如果你有三倍
自由内存。如果不起作用,请尝试我提到的解决方案-下载其他旧版本并尝试。谢谢。我试着增加它们,但还是得到了同样的结果。我试着下载IntelliJ的旧版本,但没有成功。请看我更新的问题。似乎大多数java程序都挂起了,而不仅仅是IDE。