Java SE二进制崩溃

时间:2012-04-23 17:57:10

标签: swing crash java

我有一个Java swing应用程序,它可以订阅大量数据并以各种方式显示这些数据。在负载很重的情况下,我遇到JRE只是停止使用消息“Java(TM)Platform SE二进制文件已经停止工作”。这显然会关闭我的应用程序,我需要重新启动它。我试图谷歌解决这个问题的方法,因为我没有在我的代码或任何我可以使用的堆栈跟踪,但我发现除了升级/重新安装JRE和运行病毒扫描之外几乎没有什么有用的信息。我已经完成了这两项措施并重新启动了服务器,但问题仍然存在。我试图使用Java VisualVM监视进程(请参阅下面的转储),但我不是这个工具的专家,可能不知道要查找什么。我所做的观察是“崩溃”似乎与垃圾收集重合。

该问题很容易重现,并在运行应用程序约10分钟后发生。我没有使用任何特定的jvm参数运行应用程序。 Java版本是1.6.0_31(升级前是_25),我在Windows 7 64位上运行。

在VisualVM下面的图片中,Java二进制文件刚刚停止工作,这似乎与GC运行一致。 Dump from Java VisualVM

我非常感谢任何帮助或想法,以便我可以解决或解决问题。感谢。

2 个答案:

答案 0 :(得分:3)

要检查的三件事:

  1. 如果您已在任何地方实施finalize()方法,请确保它不会直接或间接锁定任何对象;这可能会导致与GC相关的灾难性死锁。

  2. 如果您有本机代码,如果代码没有正确使用全局引用,可能会发生任何奇怪的事情,包括死锁和奇怪的内存损坏,这将再次与GC活动相关联。

  3. 最后,GC可能只是“搅拌锅”并暴露了应用程序中存在的香草死锁;检查同步协议。

答案 1 :(得分:2)

垃圾收集暂停VM的应用程序线程,这可能会在某处暴露出竞争条件。