限制 Gradle/Android Studio 建置的優先權/執行緒?

限制 Gradle/Android Studio 建置的優先權/執行緒?

當 Android Studio 建置我的專案時,它很容易耗盡我所有的 8 個核心。我希望在編譯我的應用程式時能夠流暢地瀏覽互聯網。有沒有辦法將 Gradle 的 java 程序設定為低優先權(nice level > 10)?

解決方案非常適合我的gentoo系統(在niceness 19上執行portage時,我可以在編譯時正常使用我的PC)。最佳情況下,只有 Gradle 的 java 應該以低優先權運行,因此 Android Studio 本身仍然保持回應。如果這不可能,也許限制 Gradle 的 java VM 僅使用 5-7 個核心會更容易嗎?但這可能會導致建置時間更長。


編輯

我手動嘗試了一下。我在循環中運行了一個腳本,設定了良好的等級 15(對於 Windows 用戶來說「優先級低」)全部每秒都有新的 java 進程。不幸的是,該系統仍然不是很敏感。我發現在編譯期間我的平均負載上升到二十我只有 4 個(邏輯)核心。這意味著 Gradle 產生了太多的線程。我在其他地方讀到這些線程也很少屈服,這可能是降低優先順序無濟於事的原因。

所以,更新的問題是:是否可以限制 Gradle 使用的執行緒數?

答案1

這似乎是一個已知問題,關於這個上游的爭論正在進行中:https://code.google.com/p/android/issues/detail?id=66696

他們說構建應該使用共享線程池,設定其大小的參數-Pandroid.threadPoolSize=<count>在 Android Studio 2.3 beta 3 中應該是可用的。

答案2

只需建立具有以下路徑的快捷方式:

cmd.exe /c start "Android Studio" /LOW "C:\Program Files\Android\Android Studio\bin\studio64.exe"

或每次在任務管理器中設定優先級,但我相信這種方法更好:)

相關內容