Java应用程序崩溃

4
我一直在开发一个大型Java应用程序。它非常并行,并使用了几个fixedThreadPools(每个有8个线程)。我在一台具有2个核心和每个核心4个处理器的计算机上运行它。我的程序正在分析大量的数据集,并在每个数据集之后保存(序列化),尽管它跨越数据集工作,因此每次运行新数据集时都会重新加载(然后保存)。
我的问题是:在运行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/
#

2
也许 -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC 不是一个好主意? - bmargulies
如果可能的话,我建议您考虑升级您的Java版本。如果问题确实可以重现,您还可以考虑向Sun/Oracle提交一个错误报告,以便他们能够处理您的代码。 - Gray
我使用G1收集器时遇到了JVM崩溃。 - matt freake
我在运行Eclipse Helios时遇到了错误,并且没有这些VM设置选项...它们是 -Xms1024m -Xmx1024m -XX:NewRatio=2 -XX:MaxPermSize=1024m -XX:PermSize=512mJRE版本:7.0_07-b10

Java VM:Java HotSpot(TM) 64-Bit Server VM(23.3-b01 mixed mode linux-amd64 compressed oops)

有问题的帧:

C 0x0000000000000000

- Rondo
这个线程最近没有更新,但当我从OpenJDK切换到Oracle时,我的问题得到了解决。第二天,我在我的Ubuntu系统上收到了一个针对我遇到的确切错误的OpenJDK更新。唉。 - joebuild
3个回答

3

只是一个猜测...

可能无法创建更多文件。

如果您在Linux上运行,请尝试运行

ulimit -c unlimited

在运行Java程序之前...这样做有两个好处:
  1. 它应该增加文件创建限制
  2. 如果发生任何错误,它将创建核心转储。
在程序运行时查看它使用了多少文件IO。

1

我会使用类似Visual VM的工具进行仪器化。它可以实时显示应用程序运行时内存、线程、CPU、创建的对象等信息。

我拥有的版本只适用于Oracle/Sun JVMs。虽然JDK附带了一个版本,但我认为它没有安装所有插件的1.6.3版本显示的详细信息多。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接