3

32 個の仮想プロセッサと 32GB のメモリを搭載した Sun サーバーで Web クロールを行っています。

私は 1460 のスレッドを開き、私のために仕事をしました。私が設定した実行時パラメータは-Xms2048-Xmx2048でした。コードを 2 回実行しましたが、別の時点でクラッシュしました。

> #
> # 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 前後)を超えたところで再度クラッシュしました。つまり、メモリが限界を超えたときにクラッシュしました。次に、4G RAM とデュアル コア プロセッサを搭載した自分の PC で実行しました。驚いたことに、これまでのところ順調に進んでいます。PC のメモリ使用量は 1.5G 前後に抑えられており、限界から少し離れています。メモリが限界に達するのを防ぐメカニズムが PC にあるように見えるほど、安定して実行されています。対照的に、Sun サーバーでは暴走しているように見えました。

編集:最新の 64 ビット Java にアップグレードして以来、これまでのところクラッシュしていません。

4

1 に答える 1

1

メモリ パラメータに「M」を追加しようとしましたか? (つまり -Xms2048M) また、VM がヒープ用に十分なスペースを予約できない場合に備えて、ms をより小さい値 (つまり 1024M) に設定してみます。

于 2012-09-12T20:29:48.763 に答える