如何在 Windows 下以低优先级从 Eclipse 启动?

Posted

技术标签:

【中文标题】如何在 Windows 下以低优先级从 Eclipse 启动?【英文标题】:How to launch from Eclipse in Low priority under Windows? 【发布时间】:2008-09-24 03:46:24 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

DOS cmd>> 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 上运行。

【讨论】:

谢谢。 dos cmd 对批处理非常有帮助:) 非常有帮助,在 Windows 10 下仍然可以工作,不需要提升进程,也不需要 UAC 提示 :-)【参考方案2】:

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

【讨论】:

【参考方案3】:

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

并在 google 上搜索 JVM 的 -Xmx 和 -Xms 参数(您可以在 Eclipse 中为 runners 配置这些参数)。

亲切的问候

【讨论】:

我实际上不需要更改内存使用情况,正如您所说的那样容易。我正在运行 CPU 密集型程序。【参考方案4】:

我花了一些时间来调查这个。 inside Java 没有降低优先级的方法(据我所知),因此您需要使用“start /min”方法。我没有试图让它发挥作用。

相反,我得到了一个多内核处理器。这为其他东西提供了空间,即使 Java 程序在一个内核上运行异常。

强烈推荐。

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

有趣的是如何将 Java 线程优先级转换为操作系统优先级。这已经解决了我的问题,它也可以帮助你。

【讨论】:

【参考方案7】:

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

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

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

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

【讨论】:

【参考方案8】:

如果您仅在开发中需要它,您可以将所有其他进程的优先级设置为高...

【讨论】:

如果设置一个很麻烦..不会设置所有其他更糟吗?

以上是关于如何在 Windows 下以低优先级从 Eclipse 启动?的主要内容,如果未能解决你的问题,请参考以下文章

如何指定线程优先级?

在windows下以服务的方式启动时提示如下: “windows 不能在 本地计算机 启动 Apache。

应用于线程的延迟优先级更改

如何在DOS下以管理员身份执行命令?

如何在不使用 Facebook 登录/注销按钮的情况下以编程方式从 Facebook SDK 3.0 注销?

如何在不使用第三方的情况下以编程方式从 Chase 下载我的银行交易?