私は大規模なJavaアプリケーションに取り組んできました。これは非常に並列であり、いくつかのfixedThreadPools(それぞれ8つのスレッドを持つ)を使用します。それぞれ4つのプロセッサを搭載した2つのコアを搭載したコンピュータで実行しています。私のプログラムは大量のデータセットを分析しており、分析はデータセット間で機能しますが、すべてのセットの後に保存(シリアル化)されるため、新しいデータセットを実行するたびに再ロードされます(その後保存されます)。私の問題はこれです:4-5データセットを実行した後(約2日かかり、コーディング効率にかなり満足しています)、5番目のセットでまったく同じ時間の後にクラッシュします(どのデータセットに関係なく)私が使う)。プログラムは反復的であるため、現時点で進行中のコードに新しいものはありません。再現性があり、どうしたらいいのかわかりません。それが助けになるなら、私は完全なエラーログを投稿することができます...
私はさまざまな設定をテストして、何かが役立つかどうかを確認してきました。現在、次の引数を使用して実行しています。
-Xmx6g -Xmx12g -XX:+ UnlockExperimentalVMOptions -XX:+ UseG1GC
ありがとう、ジョー
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x0000000000000000, pid=18454, tid=140120548144896
#
# JRE version: 7.0_03-b147
# Java VM: OpenJDK 64-Bit Server VM (22.0-b10 mixed mode linux-amd64 compressed oops)
# Derivative: IcedTea7 2.1.1pre
# Distribution: Ubuntu precise (development branch), package 7~u3-2.1.1~pre1-1ubuntu2
# Problematic frame:
# C 0x0000000000000000
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please include
# instructions on how to reproduce the bug and visit:
# https://bugs.launchpad.net/ubuntu/+source/openjdk-7/
#