【问题标题】:Java Application CrashJava 应用程序崩溃
【发布时间】:2012-07-04 02:03:19
【问题描述】:

我一直在开发一个大型 Java 应用程序。它是相当并行的,并且使用了几个固定线程池(每个线程池有 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/
#

【问题讨论】:

  • 也许 -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC 不是那么好死?
  • 如果可能,我会考虑升级您的 java 版本。如果确实可重复,您也可以考虑将错误与您的代码一起提交给 Sun/Oracle。
  • 我在使用 G1 收集器时遇到过 JVM 崩溃
  • 我在运行 Eclipse Helios 时看到错误,并且没有这些选项用于 VM 集...它们是 -Xms1024m -Xmx1024m -XX:NewRatio=2 -XX:MaxPermSize=1024m -XX :PermSize=512m JRE 版本:7.0_07-b10 # Java VM:Java HotSpot(TM) 64 位服务器 VM(23.3-b01 混合模式 linux-amd64 压缩 oops)# 有问题的帧:# C 0x0000000000000000 #
  • 这个帖子最近没有更新,但是当我从openJDK切换到oracles时,我的问题得到了解决。第二天,我在我的 ubuntu 系统上获得了 openJDK 的更新,以了解我遇到的确切错误。叹息。

标签: java multithreading serialization parallel-processing jvm-crash


【解决方案1】:

只是猜测......

可能是无法创建更多文件

如果你在 linux 中运行这个尝试运行

ulimit -c unlimited

在你运行你的 java 程序之前...这应该有两个方面的帮助

  1. 应该增加文件创建限制
  2. 如果发生任何错误,它将创建核心转储。

查看程序运行时它使用了多少文件 IO。

【讨论】:

    【解决方案2】:

    我会用Visual VM 之类的东西来检测它。它将在您的应用程序运行时实时显示内存、线程、CPU、创建的对象等中发生的情况。

    我拥有的好版本仅适用于 Oracle/Sun JVM。 JDK 附带了一个,但我认为它显示的细节不如安装了所有插件的 1.6.3 版。

    【讨论】:

    • 谢谢,这看起来很有用。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-07-16
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多