2
CPU負荷を監視する必要があるコードセクションがあります。次のコード行を使用してCPU負荷を取得します。サービスとして実行するとOperatingSystemMXBean.getSystemCpuLoadが動作しません
((com.sun.management.OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean()).getSystemCpuLoad();
テスト中は正常です。
として実行している2012年のWindowsサーバーに展開すると、getSystemCpuLoadは常に-1を返します。
サービスを停止してアプリケーションとして実行すると(2012年のWindow Serverマシン上でも)、サービスは再び動作します。
私はクラスパスの違いと環境変数の違いを見て、矛盾を見つけることはできません。
getSystemCpuLoadがアプリケーションで実行されているがサービスとして実行されていない理由を知っている人はいますか?
これは、ネイティブコード[ここでは 'OperatingSystemImpl.c'](http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/9d617cfd6717/src/windows/native/)を呼び出します。 sun/management/OperatingSystemImpl.c)、そこには 'return -1'があまりにも多くあります。 –