我正在从 Eclipse(在 Windows 上)运行占用大量 CPU 时间的程序。为了避免让我的整个机器陷入困境,我使用任务管理器将优先级设置为低。然而,这是一个繁琐的手动过程。Eclipse 有没有办法自动设置这个优先级?
编辑:我意识到每个特定的启动器(Java、Python 等)都有自己的配置方法,所以我将把这个问题限制在 Java 领域,这是我最需要的。
我正在从 Eclipse(在 Windows 上)运行占用大量 CPU 时间的程序。为了避免让我的整个机器陷入困境,我使用任务管理器将优先级设置为低。然而,这是一个繁琐的手动过程。Eclipse 有没有办法自动设置这个优先级?
编辑:我意识到每个特定的启动器(Java、Python 等)都有自己的配置方法,所以我将把这个问题限制在 Java 领域,这是我最需要的。
我在 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。
我假设您使用外部工具启动这些程序。如果是这样,那么您可以修改启动命令以使用start /low
前面描述的 hack。但是,如果这些应用程序具有特殊的启动类型(如 Java 应用程序或类似的),那么您就有麻烦了。真正改变这一点的唯一方法是打开 Eclipse 的源代码,找到该启动类型及其调度任务的位置,然后将其修改为使用start /low
. 抱歉,但我认为没有简单的解决方案。
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.
更好的选择是配置 Eclipse 将使用的内存量:http: //www.eclipsezone.com/eclipse/forums/t61618.html
并在谷歌上搜索 JVM 的 -Xmx 和 -Xms 参数(您可以在 Eclipse中为运行者配置)。
亲切的问候
我也想要这个,奇怪的是这是不可能的,真的。我知道您可以设置线程优先级,但我认为在 Windows 领域,线程都被安排在进程优先级“内部”,可以这么说。
我在 Linux 中遇到了同样的问题并发现了这个: http ://tech.stolsvik.com/2010/01/linux-java-thread-priorities-workaround.html
有趣的一点是关于如何将 Java 线程优先级转换为 OS 优先级。这已经解决了我的问题,它也可以帮助你。
使用操作系统工具或伪造的 java.exe 来捕获 eclipse 启动器生成的非常长的 javaw.exe 命令。
绕过 eclipse.exe 并直接启动 javaw.exe。
一旦你有 javaw.exe 直接正确启动。
START /BELOWNORMAL \path\javaw.exe 大量参数到加载工作区
If you need it only in development you can set the priority of all other processes to high...