我做的网页抓取与32个虚拟处理器和32GB内存的Sun服务器上。
我打开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的价值超过了交换的值(这两者都是围绕2150M)点坠毁。 换句话说,它坠毁时内存超出了极限。 然后我跑我自己的电脑有4G内存和双核处理器。 令我惊讶的是,它已经做得很好至今。 PC上的内存使用率保持周围1.5G和稍远的极限。 它已经使运行平稳,它似乎存在阻止内存达到其限制在PC上的机制。 相反,它似乎失去控制的Sun服务器上。
编辑:到目前为止还没有崩溃,因为我升级到最新的64位Java。