0

不久前我在使用 Solaris 时遇到了一个问题,我想限制 Java 可以看到的 CPU 数量(由Runtime.getRuntime().availableProcessors().告诉 usingtaskset会限制 java 将使用的 CPU 数量(确实如此),但它不会改变availableProcessors().

我进行了相当多的搜索以找到更改此availableProcessors()返回值的某种方法,但我没有找到任何东西。有谁知道限制它的方法或为什么taskset -c 0,1 java -cp ./ Test不起作用。

测试.java

public class Test {
  public static void main(String args[]) {
    System.out.println(Runtime.getRuntime().availableProcessors());
  }
}

干杯

4

1 回答 1

-1

毫不奇怪,taskset 在这里不起作用,因为它是一个设置调度程序参数的命令,而 availableProcessors() 没有任何理由查询调度程序。

请注意,在您的示例中,任务集不仅将您限制为两个处理器;它限制您使用两个特定的处理器(0 和 1)。

我想知道您是否可以使用横切 (AOP) 或字节码生成来包装 availableProcessors() 调用?

于 2009-06-04T23:56:33.113 回答