我在使用Solaris时遇到了一个问题,我希望限制Java可以看到的CPU数量(由Runtime.getRuntime().availableProcessors()
返回。我以为我有了它,我得到了一些关于Linux的信息我被告知使用taskset
将限制java将使用的CPU数量(这是真的,它确实如此),但它不会改变availableProcessors()
返回的内容。< / p>
我已经搜索了很多,以找到一些更改此availableProcessors()
返回值的方法,但我还没有设法找到任何内容。有没有人知道限制它的方法或为什么taskset -c 0,1 java -cp ./ Test
不起作用。
Test.java
public class Test {
public static void main(String args[]) {
System.out.println(Runtime.getRuntime().availableProcessors());
}
}
干杯
答案 0 :(得分:-1)
任务集在这里不起作用就不足为奇了,因为它是一个设置调度程序参数的命令,而availableProcessors()没有任何理由来查询调度程序。
请注意,在您的示例中,taskset不仅限制您使用两个处理器;它限制你使用两个特定的处理器(0和1)。
我想知道你是否可以使用横切(AOP)或字节码生成来包装availableProcessors()调用?