【问题标题】:JVM crashing when using AffineTransformOp to filter image使用 AffineTransformOp 过滤图像时 JVM 崩溃
【发布时间】:2011-09-20 23:44:36
【问题描述】:

在使用AffineTransformOp 过滤图像时,我一直在与偶尔的 JVM 崩溃作斗争,我想知道是否有人可以帮助我。不久前,我已经向 Oracle 提交了一份错误报告 here,但似乎无法从他们那里得到任何回复。有没有人处理过这些类型的 JVM 崩溃?是否有任何解决方法或任何方法来捕获这些崩溃?

【问题讨论】:

  • 任何特定图像是否可靠地失败?
  • 我没有看到任何图像可靠地失败。我在测试过程中看到,一遍又一遍地渲染相同的图像会导致崩溃。

标签: java jvm affinetransform


【解决方案1】:

failure 出现在sun.awt.image.ImagingLibtransformBI() 方法中。由于该方法是本地的,因此问题可能特定于一个平台、操作系统版本或映像。我没有看到直接归因于AffineTransformOp 的问题,但与线程相关的问题很常见。验证所有 GUI 对象是否仅在 event dispatch thread 上创建和操作可能会有所帮助。

【讨论】:

  • 由于崩溃发生不一致,并且可以通过一遍又一遍地打开和关闭相同的图像来发生,我认为这是一个线程问题。这段代码是从我认为根据定义发生在事件调度线程上的paint(Graphics g)调用的,不是这样吗?
  • 不行,使用isDispatchThread()查看;根据需要使用invokeLater()
  • 如果这是 Swing,“程序应该覆盖 paintComponent() 而不是覆盖paint()。”—The Paint Methods
【解决方案2】:

为什么不尝试升级到 Java 7?它说他们已经接受它作为一个低优先级的错误——这可能是在他们修复它之前你应该期望的所有响应。或者您可以切换平台(例如切换到 Linux),因为错误似乎在本机代码中。

【讨论】:

  • 我认为如果他们修复了 Java 7 中的错误,那么他们就会更新票证。不是这样吗?
  • 尝试 1.6.0_17 而不是 1.6.0_24。很可能这是一种回归,并且在早期版本中不存在。
  • 你能告诉我你从哪里得到的吗?我有兴趣阅读它。谢谢
  • @Jon -- 试一试也无妨?也许他们本身并没有“修复它”,但由于代码重写、不同的内部设计等,它可能在 Java 7 中从未存在过。此外,作为最后的手段,您可以尝试使用旧版本,以防它是回归。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 1970-01-01
  • 2023-03-24
  • 2014-10-13
  • 2016-10-11
相关资源
最近更新 更多