崩溃发生在Java虚拟机外部的本机代码中

时间:2012-08-20 11:58:22

标签: java multithreading jvm native-code jvm-crash

我正在使用32个虚拟处理器和32GB内存的Sun服务器上进行Web爬网。

我打开了1460个帖子来为我完成这项工作。我设置的运行时参数是-Xms2048-Xmx2048。我已经运行了两次代码,但它在不同的地方崩溃了。

> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> #  SIGSEGV (0xb) at pc=0xff390f38, pid=3053, tid=7640
> #
> # JRE version: 6.0_15-b03
> # Java VM: Java HotSpot(TM) Server VM (14.1-b02 mixed mode solaris-sparc )
> # Problematic frame:
> # C  [libc_psr.so.1+0xf38]  memset+0x78
> #
> # If you would like to submit a bug report, please visit:
> #   http://java.sun.com/webapps/bugreport/crash.jsp
> # The crash happened outside the Java Virtual Machine in native code.
> # See problematic frame for where to report the bug.
> #
> 

编辑:我将线程数减少到40并在同一台服务器上运行。它在RSS的值超过Swap的值时再次崩溃(两者都在2150M左右)。换句话说,当内存超出限制时它会崩溃。然后我在自己的PC上用4G RAM和双核处理器运行它。令我惊讶的是,到目前为止它一直表现良好。 PC上的内存使用量保持在1.5G左右,距离极限有点远。它运行得非常稳定,似乎PC上有一种机制阻止内存达到极限。相比之下,它似乎在Sun服务器上失控。

编辑:自从我升级到最新的64位Java以来​​,它还没有崩溃。

1 个答案:

答案 0 :(得分:0)

您是否尝试在内存参数中添加“M”? (即-Xms2048M)另外,如果VM无法为堆预留足够的空间,我会尝试将ms设置为较小的值(即1024M)。