4

我一直在研究一個大的Java應用程序。它非常平行,並且使用了幾個fixedThreadPools(每個都有8個線程)。我在一臺有2個內核的計算機上運行它,每個內核有4個處理器。我的程序正在分析大量的數據,並且每次設置後都會保存(序列化)分析,儘管它可以跨數據集使用,並且每次運行一個新的(然後保存)時都會重新加載。 我的問題是:在運行4-5個數據集(大約需要2天,我對編碼效率非常滿意)之後,它會在第五組完全相同的時間量之後崩潰(不管哪些數據設置我使用)。該程序是重複性的,因此目前代碼中沒有新的內容。它是可重複的,我不知道該怎麼做。我可以發佈完整的錯誤日誌,如果這可以幫助...我明白,這個問題是不明確的,沒有更多的詳細信息,但如果有任何指導意見,將不勝感激。Java應用程序崩潰

我一直在測試不同的設置,以查看是否有幫助,現在我正在運行以下參數。

-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/ 
# 
+2

也許-XX:+ UnlockExperimentalVMOptions -XX:+ UseG1GC不是這麼好的diea? – bmargulies

+0

如果可能的話,我會考慮升級你的java版本。如果您的代碼真的可重複,您也可以考慮使用您的代碼向Sun/Oracle提交錯誤。 – Gray

+0

我有使用G1收集器的JVM崩潰 –

回答

1

我會用類似Visual VM的東西來測試它。它會在您的應用程序運行時實時顯示內存,線程,CPU,創建的對象等等發生了什麼。

我擁有的漂亮版本僅適用於Oracle/Sun JVM。有一個與JDK一起發佈,但我不相信它會顯示與安裝了所有插件的版本1.6.3相同的詳細信息。

+0

謝謝,這看起來非常有用。 – JoeC

3

只是一個硬猜測...

可能是它不能創建更多文件

如果您在linux中運行此嘗試運行

ulimit -c unlimited 

在運行Java程序...這將有助於在兩個方面

  1. 如果發生任何錯誤,將創建核心轉儲應該增加文件創建限制

查看在程序運行時它使用多少個文​​件IO。

+0

謝謝,我會試試這個。 – JoeC

0

只需在eclipse.ini文件中添加-Dorg.eclipse.swt.browser.DefaultType = mozilla即可。