我是一名经常使用 Android Studio 的开发人员。当它编译 Java 类时,它会启动 4 个以上的 CPU 密集型线程。当这种情况发生时,我经常在后台播放音乐。以下是发生的情况:
- 音乐在合辑最精彩的部分跳过或完全停止
- 鼠标点抖动或完全停止响应
编译完成后,大多数情况下一切都会恢复正常,但有时电脑会完全冻结,我不得不硬重置它。这是怎么回事?Linux/Ubuntu/Unity 不是设计为优先考虑 UI 线程吗?它如何允许 Java 占用 100% 的 CPU 资源?有什么方法可以限制这种情况吗?
免责声明:我不太了解操作系统代码。
答案1
Linux 内核非常擅长管理 CPU,所以我认为你的问题与 IO 有关。编译时 CPU 使用率达到 100% 是完全正常的,这就是你付出的代价。
不过,我同意你的观点,UI 不应该受到如此严重的影响。
关于您的系统无响应
我认为你应该尝试ionice
降低android studio的IO优先级。
记忆
也有可能您的系统内存不足,所以开始使用交换。top
可用于查看交换使用情况。 可以通过减少 RAM 使用量、添加 RAM 或最终调整交换性您的系统。
不幸的是,我不是 Android Studio 的用户,无法帮助配置它。
关于全面冻结
这真的不应该发生,这是一个错误,你应该填补一个错误ubuntu 错误追踪器。
但在修复 bug 之前,我认为你应该更新你的系统,包括安装最新的 HWE 内核和 Xorg(参见这里)。