swing - Java SE 二进制崩溃

标签 swing crash java

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

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

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

非常感谢您提供任何帮助或想法,以便我能够解决或解决问题。谢谢。

最佳答案

需要检查的三件事:

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

  2. 如果您有 native 代码,如果代码未正确使用全局引用,则可能会发生许多奇怪的事情,包括死锁和奇怪的内存损坏,这又与 GC Activity 相关。

  3. 最后,GC 可能只是“搅局”并暴露应用程序中本来存在的普通死锁;检查您的同步协议(protocol)。

关于swing - Java SE 二进制崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10285717/

相关文章:

java - 数据库表的 2D ArrayList

C++ Mex 文件在 64 位 linux 上使 matlab 崩溃,但在 32 位 Windows 上不会,但程序在 Matlab 外运行良好

java - 为方法调用的每个实例返回相同的值

java - ActionListener问题

java - 如何在java中实现基于密码的混合加密?

java - 如何使 CardLayout 能够处理任意数量的卡片?

java - 想要从 J2SE 应用程序管理 Google 云存储桶

Java Swing dispose() 与 setVisible(false)

visual-studio-2008 - 尝试加载解决方案文件时 Visual Studio 2008 崩溃

swift3 - 通过编码防止崩溃