我们有一段代码需要监控 CPU 负载。我们使用以下代码行获取 CPU 负载:
((com.sun.management.OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean()).getSystemCpuLoad();
在测试期间,这工作正常。
当部署到作为服务运行的 2012 Windows Server 时,getSystemCpuLoad 始终返回 -1。
如果我们停止服务并将其作为应用程序运行(仍在 2012 Window Server 机器上),它会再次运行。
我查看了类路径差异和环境变量差异,找不到任何差异。
有谁知道为什么 getSystemCpuLoad 在应用程序中运行而不是作为服务运行时有效?