우리는 CPU로드를 모니터링해야하는 코드 섹션을 가지고 있습니다. 다음 코드 줄을 사용하여 CPU로드를 얻습니다.서비스로 실행하면 OperatingSystemMXBean.getSystemCpuLoad가 작동하지 않습니다.
((com.sun.management.OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean()).getSystemCpuLoad();
테스트하는 동안 문제가 없습니다.
2012 년 Windows 서버 에 서비스으로 실행될 때 getSystemCpuLoad는 항상 -1을 반환합니다.
서비스를 중지하고 응용 프로그램으로 실행하면 (여전히 2012 윈도우 서버 시스템에서) 다시 작동합니다.
클래스 패스의 차이점과 환경 변수의 차이점을 살펴본 데 차이점을 찾을 수 없습니다.
누구나 getSystemCpuLoad가 응용 프로그램에서는 실행되지만 서비스로 실행되지 않는 이유는 무엇입니까?
이 코드는 네이티브 코드 [OperatingSystemImpl.c'에 있습니다.] (http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/9d617cfd6717/src/windows/native/)를 호출합니다. sun/management/OperatingSystemImpl.c), 거기에 추적 할 수있는'return -1'이 너무 많습니다. –