3

Java 用の Sigar ライブラリを使用していますが、次のエラーが発生します。

Java ランタイム環境によって致命的なエラーが検出されました: EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000010014ed4、pid=1560、tid=4812

ここで、生成されたエラー ログを確認できます。(私のマシンスペックも)

これは、プログラムが数時間実行された後にランダムに発生します。その後、クラッシュし、パラメーター (CPU、RAM、ディスクなど) を監視できなくなります。これは非常に煩わしく、 SIGARがクラッシュするかどうかを信頼できないため、SIGAR はまったく役に立たなくなります。

私はそれについてこの2つのトピックを読んできましたが、ライブラリの問題であり、適切な解決策が提案されていないようです(ライブラリはエラーを修正していないようです)

この回答で64 ビットで解決する方法について話している人がいますが、そのファイルはダウンロードすることさえできません。(java/srcフォルダはありません)。

それに対処する方法について何か考えはありますか?それは修正可能ですか?そうでない場合、Sigar のどの代替案を提案してくれますか?

これが関連する場合、これらは私がアプリケーションで使用している Sigar 関数です。

 - new Sigar();
 - Sigar.getProcCpu();
 - Sigar.getCpuList();

 - new ProcessFinder();
 - ProcessFinder.find();

 - new ProcCpu();
 - ProcCpu.gather();

 - new ProcMem();
 - ProcMem.gather();
 - ProcMem.getResident()

 - ProcCpu.getTotal();
 - ProcCpu.getLastTime();

 - Sigar.getMem();
 - Mem.getActualFree();
 - Mem.getActualUsed();
 - Mem.getFree();
 - Mem.getRam();
 - Mem.getTotal();
 - Mem.getUsed();
 - Mem.getUsedPercent();

 - new FileSystemUsage();
 - FileSystemUsage.getFree();
 - FileSystemUsage.getUsed();
4

1 に答える 1

1

それに対処する方法について何か考えはありますか?

エラー ダンプからのスレッド スタック トレースは次のとおりです。

Stack: [0x000000000d180000,0x000000000d280000],  sp=0x000000000d27f3c0,  free space=1020k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [sigar-amd64-winnt.dll+0x14ed4]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J  org.hyperic.sigar.ptql.SigarProcessQuery.find(Lorg/hyperic/sigar/Sigar;)[J
J  com.hpuk.sentinel.monitor.Monitor.getData()Ljava/util/List;
J  com.hpuk.schedule.Scheduler.run()V
v  ~StubRoutines::call_stub

それは、問題が SIGAR ネイティブ ライブラリで発生していると言っているようです。

あなたは何ができますか?

  • 他の誰かが問題を報告しているかどうかを確認できます。(あなたが見つけた SIGAR-192 の問題は、あなたの問題とは非常に異なっているように見えます。)

  • 問題を報告し、メンテナーが解決策を提供できるかどうかを確認することができます。(しかし、「SIGAR は役に立たない」などの扇動的な発言でバグレポートを刺激するのは、本当に悪い考えです...)

  • SIGAR の新しいバージョンにアップグレードして、それが役立つかどうかを確認できます。(現在、これは 1.7 であり、まだ「安定」とマークされていません。)

  • SIGAR ソース コードをダウンロードして、自分で問題をデバッグしてみてください。

  • VMWare に連絡して、サポート契約を取得できるかどうかを尋ねることができます。Hyperic は VMWare 製品になったようです...

  • または...あきらめることができます。

それは修正可能ですか?

もちろんそうです...しかし、それを修正するにはかなりの労力を費やす必要があるかもしれません.

于 2014-05-01T10:46:47.003 に答える