我有一个与SIGSEGV一段时间后中止的java进程。 在我用更多的RAM升级服务器之后就开始发生了。 经过不同的JVMtesting,我怀疑这可能是一个硬件问题。 但memtest86没有发现问题。
那么,我还能做些什么来检测问题的根源呢? 我应该一个接一个地将RAM模块检测到故障模块吗?
服务器在64位OpenSuse11.3上运行。
内存似乎不是一个ECC。 我有一个这样的套件(3 * 4GB * 2 = 24GB):
http://www.kingston.com/datasheets/KHX1600C9S3K2_8GX.pdf
我们对新系统运行Memtest86 + 48-72小时,多年来我们发现了很多错误,直到第二天或第三天才显示出来。 只有几个通行证是不够的。
此外,不要混合ECC和非ECC,是的,你可能不得不删除/玩弄/重新testing内存模块find罪魁祸首。
请记住,段错误通常是由于编程错误,如缓冲区溢出,免费使用和空指针取消引用。
还有一个build议,关于Memtests86 + 。 Memtest将确认所有的内存,但有时只有当机器的温度条件达到一定水平时才会显示硬件故障。 memtest并不强调系统的磁盘和其他部分。
如果您认为温度可能会成为问题,请尝试在比平时更差的温度条件下运行memtest。
在看了BIOS设置后,有一个替代的“系统内存乘数”被设置为12.我将此设置更改为“自动”,崩溃不再发生。 所以,我认为这可能有助于其他人有类似的问题。
有一个应用程序可以帮助您在运行系统时检查RAM中的错误。 我的意思是你不需要重新启动你的系统,并停止你的工作。 RAM检查和你的工作可以并行运行
memtester
如果你正在安装Ubuntu,你可以安装它
sudo apt-get install memtester