如何在 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。