gpt4 book ai didi

java - 从 Eclipse 启动时设置 Java 进程的 CPU 关联性

转载 作者:行者123 更新时间:2023-11-30 07:09:15 25 4
gpt4 key购买 nike

有一些第三方库出于许可目的检查 CPU 数量,但没有明显的方式告诉他们“使用 1 个核心”。

为了绕过此限制,我希望能够在此过程的早期启动 CPU 关联性。

有没有办法为从 Eclipse 中启动的进程设置 CPU 关联性?我希望保持工作流程相对相同,这意味着我仍然希望能够进行调试等。

如果这是唯一的解决方案,我可以修改程序,但我更喜欢依赖 JVM 选项或 Eclipse 运行程序参数的解决方案。

最佳答案

看起来像这样:

How to use Java Native Access to set process affinity for processes besides Java.exe?

提供了问题本身的解决方案,至少对于 Windows 而言。复制到这里供后代使用:

   private void setDesiredCpuAffinity() {
int pid = -1; // -1 means current process
AffinityKernel instance = (AffinityKernel) Native.loadLibrary("Kernel32", AffinityKernel.class);
int affinityMask = 7; // Use 3 CPUs
System.out.println(instance.SetProcessAffinityMask(new HANDLE(new Pointer(pid)), affinityMask));
}

private static interface AffinityKernel extends Kernel32 {
public boolean SetProcessAffinityMask(HANDLE hProcess, int dwProcessAffinityMask);
}

据此:

SetProcessAffinityMask的第一个参数是HANDLE hProcess

据此:

hProcess = -1表示当前进程。

关于java - 从 Eclipse 启动时设置 Java 进程的 CPU 关联性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39476385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com