2008-09-24 6 views
6

Ich verwende Programme von Eclipse (unter Windows), die viel CPU-Zeit verbrauchen. Um zu vermeiden, dass mein gesamter Rechner ausgelagert wird, setze ich mit dem Task-Manager die Priorität auf Niedrig. Dies ist jedoch ein umständlicher manueller Prozess. Gibt es eine Möglichkeit, wie Eclipse diese Priorität automatisch festlegen kann?Wie startet man von Eclipse mit niedriger Priorität unter Windows?

EDIT: Ich erkannte, dass jeder bestimmte Launcher (Java, Python usw.) seine eigene Konfigurationsmethode hat, also werde ich diese Frage auf die Java-Domäne beschränken, die ich am meisten brauche.

Antwort

0

Eine bessere Alternative ist die Menge an Speicher konfigurieren, die von Eclipse verwenden: http://www.eclipsezone.com/eclipse/forums/t61618.html

Und eine Google-Suche über -Xmx und -Xms Parameter für JVM (die Sie für Läufer in Eclipse konfiguriert werden konnten).

Mit freundlichen Grüßen

+0

i keine Notwendigkeit, tatsächlich die Speichernutzung zu ändern, was einfach ist, wie Sie sagen. Ich führe CPU-intensive Programme aus. – adum

2

Ich gehe davon aus, dass Sie diese Programme mit externen Tools starten. Wenn dies der Fall ist, können Sie den Startbefehl ändern, um den zuvor beschriebenen Hack start /low zu verwenden. Wenn diese Anwendungen jedoch einen speziellen Starttyp haben (wie Java-Anwendung oder Ähnliches), sind Sie in Schwierigkeiten. Die einzige Möglichkeit, dies zu ändern, wäre, die Quelle für Eclipse zu öffnen, den Launch-Typ und den Ort zu finden, an dem die Aufgabe ausgeführt wird, und sie dann so zu ändern, dass sie start /low verwendet. Entschuldigung, aber ich denke nicht, dass es eine einfache Lösung dafür gibt.

0

Ich habe vor einiger Zeit eine Weile gebraucht, um das zu untersuchen. Es gibt keine Methode innerhalb Java, um die Priorität zu senken (so weit ich sehen konnte), so müssen Sie die "Start/min" -Ansatz verwenden. Ich habe nicht versucht, das zu schaffen.

Stattdessen bekam ich einen Multi-Kernel-Prozessor. Dies gibt Raum für andere Dinge, selbst wenn ein Java-Programm auf einem Kernel Amok läuft.

Wird dringend empfohlen.

0

Ich würde das auch gerne, seltsam, dass es nicht möglich ist, wirklich. Ich weiß, dass Sie Thread-Prioritäten setzen können, aber ich denke, in Windows-Land sind Threads alle "innerhalb" der Prozesspriorität sozusagen eingeplant.

-4

Wenn Sie es nur in der Entwicklung müssen Sie die Priorität aller anderen Prozesse zu hoch einstellen ...

+0

Wenn die Einstellung schwerfällig ist ... würden alle anderen nicht noch schlechter werden? – Scorpio

2

Ich habe das gleiche Problem auf Windows --- Starten von Subprozesse, die alle CPUs (Thread-parallele Jobs) verwenden, aber ich möchte gute Reaktionsfähigkeit in meiner Windows-Entwicklungsumgebung.

Lösung: nach mehreren Jobs starten:

DOS cmd >>wmic process where name="javaw.exe" CALL setpriority "below normal"

Nein, der eclipse.exe Prozess nicht beeinflussen.

Java-Lösung: Fügen Sie diesen Code in Ihre CPU-intensive Programme ihre eigenen Windows-Priorität zu senken:

public static void lowerMyProcessPriority() throws IOException { 
    String pid = ManagementFactory.getRuntimeMXBean().getName(); 
    int p = pid.indexOf("@"); 
    if (p > 0) pid = pid.substring(0,p); 
    String cmd = "wmic process where processid=<pid> CALL setpriority".replace("<pid>", pid); 
    List<String> ls = new ArrayList<>(Arrays.asList(cmd.split(" "))); 
    ls.add("\"below normal\""); 
    ProcessBuilder pb = new ProcessBuilder(ls); 
    pb.start(); 
} 

Ja, getestet. Funktioniert auf Win7.

+0

danke. Die dos cmd ist sehr hilfreich für Batch-Sachen :) – wuppi

0

Verwenden Sie ein Betriebssystem-Tool oder eine gefälschte java.exe, um den wirklich langen Befehl javaw.exe einzufangen, den der Eclipse-Launcher erzeugt.

Bypass eclipse.exe und starten Sie die javaw.exe direkt.

Sobald Sie die javaw.exe direkt und korrekt gestartet haben.

START/BELOWNORMAL \ pfad \ javaw.exe viel-of-Parameter-to-load-Arbeitsplatz

Verwandte Themen