6

我正在从 Eclipse(在 Windows 上)运行占用大量 CPU 时间的程序。为了避免让我的整个机器陷入困境,我使用任务管理器将优先级设置为低。然而,这是一个繁琐的手动过程。Eclipse 有没有办法自动设置这个优先级?

编辑:我意识到每个特定的启动器(Java、Python 等)都有自己的配置方法,所以我将把这个问题限制在 Java 领域,这是我最需要的。

4

8 回答 8

5

我在 Windows 上遇到了同样的问题——启动使用所有 CPU(线程并行作业)的子进程,但我希望在我的 Windows 开发环境中具有良好的响应能力。

解决方案:启动多个作业后:

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

不,这不会影响 eclipse.exe 进程。

Java 解决方案:将此代码插入 CPU 密集型程序以降低它们自己的 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。

于 2016-12-08T18:33:07.150 回答
2

我假设您使用外部工具启动这些程序。如果是这样,那么您可以修改启动命令以使用start /low前面描述的 hack。但是,如果这些应用程序具有特殊的启动类型(如 Java 应用程序或类似的),那么您就有麻烦了。真正改变这一点的唯一方法是打开 Eclipse 的源代码,找到该启动类型及其调度任务的位置,然后将其修改为使用start /low. 抱歉,但我认为没有简单的解决方案。

于 2008-09-24T20:04:46.023 回答
0

I spent some time a while back to investigate this. There is no method inside Java to lower the priority (as far as I could see), so you need to employ the "start /min" approach. I didn't try to get that working.

Instead I got a multi-kernel processor. This gives room for other stuff, even if a Java program runs amok on one kernel.

Strongly recommended.

于 2009-01-11T19:18:55.067 回答
0

更好的选择是配置 Eclipse 将使用的内存量:http: //www.eclipsezone.com/eclipse/forums/t61618.html

并在谷歌上搜索 JVM 的 -Xmx 和 -Xms 参数(您可以在 Eclipse中为运行者配置)。

亲切的问候

于 2008-09-24T03:51:24.053 回答
0

我也想要这个,奇怪的是这是不可能的,真的。我知道您可以设置线程优先级,但我认为在 Windows 领域,线程都被安排在进程优先级“内部”,可以这么说。

于 2010-05-11T17:49:47.253 回答
0

我在 Linux 中遇到了同样的问题并发现了这个: http ://tech.stolsvik.com/2010/01/linux-java-thread-priorities-workaround.html

有趣的一点是关于如何将 Java 线程优先级转换为 OS 优先级。这已经解决了我的问题,它也可以帮助你。

于 2012-01-31T06:39:31.740 回答
0

使用操作系统工具或伪造的 java.exe 来捕获 eclipse 启动器生成的非常长的 javaw.exe 命令。

绕过 eclipse.exe 并直接启动 javaw.exe。

一旦你有 javaw.exe 直接正确启动。

START /BELOWNORMAL \path\javaw.exe 大量参数到加载工作区

于 2017-11-08T21:30:14.577 回答
-4

If you need it only in development you can set the priority of all other processes to high...

于 2010-09-01T08:01:19.413 回答