我使用的是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产品…
或者…你可以放弃。
它甚至可以修复吗?
当然是…但是你可能需要花费大量的精力来修复它。