Как запустить из Eclipse с низким приоритетом под Windows? - PullRequest
6 голосов
/ 24 сентября 2008

Я использую программы из Eclipse (для Windows), которые потребляют много процессорного времени. Чтобы не перегружать всю мою машину, я установил приоритет на Низкий с помощью диспетчера задач. Однако это трудоемкий ручной процесс. Есть ли способ, которым Eclipse может установить этот приоритет автоматически?

РЕДАКТИРОВАТЬ: я понял, что каждый конкретный модуль запуска (Java, Python и т. Д.) Имеет свой собственный метод конфигурации, поэтому я ограничу этот вопрос доменом Java, который мне больше всего нужен.

Ответы [ 8 ]

3 голосов
/ 08 декабря 2016

У меня та же проблема в Windows - запуск подпроцессов, которые используют все процессоры (параллельные потоки), но я хочу хорошей отзывчивости в моей среде разработки Windows.

Решение : после запуска нескольких заданий:

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

Нет, это не повлияет на процесс eclipse.exe.

Решение Java : вставьте этот код в программы, интенсивно использующие ЦП, чтобы снизить собственный приоритет Windows:

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();
}

Да, проверено. Работает на Win7.

2 голосов
/ 25 сентября 2008

Я предполагаю, что вы запускаете эти программы с помощью External Tools. Если это так, то вы можете изменить команду запуска, чтобы использовать хак start /low, описанный ранее. Однако, если эти приложения имеют специальный тип запуска (например, Java-приложение или аналогичный), то у вас проблемы. Единственный способ изменить это - открыть исходный код Eclipse, найти тот тип запуска и место, куда он отправляет задачи, а затем изменить его для использования start /low. Извините, но я не думаю, что есть простое решение для этого.

0 голосов
/ 09 ноября 2017

Используйте инструмент ОС или фальшивый java.exe, чтобы перехватить очень длинную команду javaw.exe, которую запускает программа запуска eclipse.

Обходите eclipse.exe и запускайте javaw.exe напрямую.

Как только у вас есть файл javaw.exe, запускаемый напрямую и правильно.

START / BELOWNORMAL \ path \ javaw.exe множество параметров для загрузки рабочей области

0 голосов
/ 31 января 2012

Я столкнулся с тем же вопросом в Linux и нашел это: http://tech.stolsvik.com/2010/01/linux-java-thread-priorities-workaround.html

Интересный момент - о том, как преобразовать приоритеты потоков Java в приоритеты ОС. Это решило проблему для меня, это может помочь и вам.

0 голосов
/ 01 сентября 2010

Если вам это нужно только в разработке, вы можете установить приоритет всех других процессов на высокий ...

0 голосов
/ 11 мая 2010

Мне бы тоже хотелось, странно, что это невозможно, правда. Я знаю, что вы можете установить приоритеты потоков, но я думаю, что в windows-land все потоки запланированы «внутри», так сказать, приоритета процесса.

0 голосов
/ 11 января 2009

Я провел некоторое время назад, чтобы исследовать это. В Java нет метода для понижения приоритета (насколько я мог видеть), поэтому вам нужно использовать подход «старт / мин». Я не пытался заставить это работать.

Вместо этого я получил многоядерный процессор. Это дает место для других вещей, даже если Java-программа работает на одном ядре.

Настоятельно рекомендуется.

0 голосов
/ 24 сентября 2008

Лучшая альтернатива - настроить объем памяти, который Eclipse будет использовать: http://www.eclipsezone.com/eclipse/forums/t61618.html

И выполните поиск в Google по поводу параметров -Xmx и -Xms для JVM (которые можно настроить для бегунов внутри Eclipse).

С уважением

...