我使用的是sigar库for java,我得到了一个错误:
Java运行时环境检测到致命错误:
PC=0x0000000014ED4、PID=1560、TID=4812时的异常访问冲突(0xC0000005)
Here您可以看到生成的错误日志。(以及我的机器规格)
这在程序运行几个小时后随机发生。然后,它崩溃了,我无法监视任何参数(CPU、RAM、磁盘…)不再。它是如此烦人,使sigar完全无用,你不能相信它是否会崩溃。
我一直在读这两个主题,但似乎是图书馆的问题,没有提出适当的解决方案(而且图书馆似乎没有纠正错误)
https://jira.hyperic.com/browse/SIGAR-192
https://communities.vmware.com/message/2121479
有个人在讨论如何解决64位的问题,但这个文件甚至无法下载。(没有java/src文件夹)。
你知道怎么处理吗?它甚至可以修复吗?如果没有,你会建议我用什么替代西格尔?
如果这是相关的,这些是我在应用程序中使用的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();

最佳答案

你知道怎么处理吗?
错误转储中的线程堆栈跟踪如下:

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没用”之类的煽动性言论来增加bug报告真是个坏主意…)
你可以升级到更高版本的sigar,看看是否有帮助。(目前是1.7……尚未标记为“稳定的”。)
您可以下载sigar源代码并尝试自己调试问题。
您可以联系vmware,询问他们是否可以获得支持合同。似乎hyperic现在是一个vmware产品…
或者…你可以放弃。
它甚至可以修复吗?
当然是…但是你可能需要花费大量的精力来修复它。

10-08 14:02