![Java 进程冻结,直到我使用 100% CPU](https://linux22.com/image/61287/Java%20%E8%BF%9B%E7%A8%8B%E5%86%BB%E7%BB%93%EF%BC%8C%E7%9B%B4%E5%88%B0%E6%88%91%E4%BD%BF%E7%94%A8%20100%25%20CPU%20.png)
我遇到的问题
当使用 Android-Studio、Eclipse 甚至命令行 Gradle 时,Java 软件经常冻结(尽管通常是在我更新系统/更改 java 之后)。对于 Android-Studio 和 Eclipse,如果我移动到另一个桌面并返回,那么它会变成灰色窗口,并且界面永远不会回来,即使在几小时后也是如此。我认为这是一个Java问题。
这种情况并不总是发生:我通常几周内都没有任何问题,直到它再次出现。我不明白是什么让它停止:当它发生时,我尝试重新启动我的计算机,更改我的 Java JDK 版本,但它没有改变任何东西。然后有一天,我启动计算机,问题就消失了 - 在接下来的几周内。
我可以观察到什么
- 一个CPU始终保持100%
- 我无法制作 Android-Studio 的线程转储(如所述这里):它也会冻结。
- 如果我跑一个大型 C++ 编译当 Android-Studio/Eclipse/Gradle 冻结时(即占用我所有 CPU 的编译),然后它停止冻结,我可以继续我的工作,直到下一次(但这种情况发生得非常频繁)。
我尝试过的
- 我尝试了另一个窗口管理器:我可以在 XMonad 和 Fluxbox 上重现该错误
- 我试图
export _JAVA_AWT_WM_NONREPARENTING=1
在/etc/profile.d/jre.sh
- 我尝试在
java-7-jdk
、java-7-openjdk
、java-8-jdk
之间切换java-8-openjdk
- 我试着跑
wmname LG3D
- 我尝试
pkill -e adb
按照评论中的建议运行 - 我尝试
jmap <pid>
在<pid>
Android Studio 上使用,但是我有一个“DebuggerException:无法附加到进程” - 我尝试
jcmd <pid> GC.run
在<pid>
Android Studio 上使用,但是我有一个“DebuggerException:无法附加到进程”和“无法打开套接字文件:目标进程没有响应或 HotSpot VM 未加载”。 - 我尝试删除我的
.gradle
目录 - 我尝试了
Invalidate and Restart
Android Studio(但这个问题看起来并不是 Android Studio 独有的,因为我在 Eclipse 中也遇到过这个问题)
我的配置
我使用的是 Arch Linux(但 Linux Mint 上也报告了类似的问题)和 Awesome WM(我在使用 XMonad 和 Fluxbox 时也遇到过同样的问题)。据我记得,这台机器上一直发生这种情况(我在2014年10月更换了)。在此之前,它在 Debian 上运行(但也使用 Awesome WM)。我已经更新了Android-Studio很多次(从0.8左右到最新版本)。
可能发生什么情况?或者我怎样才能弄清楚?
相关问题
我最近发现这个帖子谈论类似的问题。我尝试了他的建议(即我尝试过export LD_ASSUME_KERNEL=2.4.1; android-studio
),但 Android Studio 根本无法启动。我是否也有 NPTL 的问题?
答案1
在 eclipse 的环境变量设置中创建一个名为 _JAVA_OPTIONS 的系统变量,其值为 -Xms256m -Xmx1024m 或将现有变量更改为这些值。这假设您有足够的可用内存。
答案2
我从来没有找到这个问题的答案,但是这个问题已经几个月(也许一年了?)没有出现过。
我猜有什么东西以某种方式解决了它。
因此,我现在就结束这个问题。