
Wenn Android Studio mein Projekt erstellt, verbraucht es problemlos alle meine 8 Kerne. Ich möchte während der Kompilierung meiner App problemlos im Internet surfen können. Gibt es eine Möglichkeit, Gradles Java-Prozessen eine niedrige Priorität (Nice-Level > 10) zuzuweisen?
Diese Lösung funktioniert perfekt für mein Gentoo-System (mit Portage auf Niceness 19 kann ich meinen PC normalerweise während der Kompilierung verwenden). Optimalerweise sollte nur Gradles Java mit niedriger Priorität ausgeführt werden, damit Android Studio selbst reaktionsfähig bleibt. Wenn das nicht möglich ist, ist es vielleicht einfacher, Gradles Java-VMs auf die Verwendung von nur 5-7 Kernen zu beschränken? Dies würde jedoch wahrscheinlich zu längeren Build-Zeiten führen.
BEARBEITEN
Ich habe ein bisschen manuell damit experimentiert. Ich habe ein Skript in einer Schleife laufen lassen, das die nette Stufe 15 ("Priorität niedrig" für Windows-Benutzer) einstellt füralleneue Java-Prozesse pro Sekunde. Leider reagiert das System immer noch nicht sehr schnell. Ich sehe, dass während der Kompilierung meine durchschnittliche Auslastung aufzwanzigwo ich nur 4 (logische) Kerne habe. Das bedeutet, dass Gradle viel zu viele Threads erzeugt. An anderer Stelle habe ich gelesen, dass auch diese Threads selten nachgeben, was der Grund sein könnte, warum eine Herabsetzung der Priorität nicht hilft.
Die aktualisierte Frage lautet also:ist es möglich, die Anzahl der von Gradle verwendeten Threads zu begrenzen?
Antwort1
Es scheint sich um ein bekanntes Problem zu handeln; darüber gibt es eine laufende Debatte weiter oben im Archiv:https://code.google.com/p/android/issues/detail?id=66696
Sie sagen, der BausollenVerwenden Sie einen gemeinsam genutzten Thread-Pool. Der Parameter zum Festlegen seiner Größe ist -Pandroid.threadPoolSize=<count>
und sollte in Android Studio 2.3 Beta 3 verfügbar sein.
Antwort2
Erstellen Sie einfach eine Verknüpfung mit folgendem Pfad:
cmd.exe /c starte "Android Studio" /LOW "C:\Programme\Android\Android Studio\bin\studio64.exe"
Oder legen Sie jedes Mal im Task-Manager die Priorität fest, aber ich glaube, dieser Ansatz ist besser : )