【问题标题】:Invalid memory access of location in JavaJava中位置的无效内存访问
【发布时间】:2011-09-27 12:02:22
【问题描述】:

我已经从事 Java 项目一年了。我的代码几个月来一直运行良好。几天前,我在我的 Mac (Snow Leopard 10.6.8) 上将 Java SDK 升级到了最新版本 1.6.0_26。升级后,发生了一些非常奇怪的事情。当我运行一些类时,我得到了这个错误:

位置 0x202 rip=0x202 的内存访问无效

但是,如果我使用 -Xint(解释)运行它们,它们会工作,速度慢但工作正常。我在使用按位运算符(奥赛罗游戏的位板)的课程中遇到了这个问题。我不能在这里放任何代码,因为我没有收到错误、异常或类似的东西。我只是收到那个烦人的消息。

如果没有 -Xint 代码无法运行,但它可以正常工作,这是否正常?我该怎么办?

提前致谢

【问题讨论】:

  • 很奇怪。这是否显示为例外?编译错误?还有什么?错误消息中是否还有更多文本?它是否表示行号?程序是继续运行,还是崩溃了?每次在没有 -Xint 的情况下运行代码时都会发生这种情况吗?你在为你的 GUI 使用 Swing 吗?有没有潜在的并发问题?
  • 不显示为异常,只是一条消息。它编译得很好。那是唯一的消息,有时它显示不同的内存地址,但只是相同的消息。程序停止运行。我没有使用 Swing,但我使用的是线程。这可能是一个并发问题,但为什么它在解释运行时不起作用?这是令人讨厌的部分。
  • 看起来像 VM 中的错误。尝试通过减少程序来隔离问题(删除您认为不必要的内容 - 如果它不会再次发生,请撤消并尝试其他部分。如果仍然存在,请重复)。然后向生成您的 JRE 的人提交错误。
  • 确保您正在编译最新版本。

标签: java jvm


【解决方案1】:

当 JVM 开始像这样崩溃时,这表明某些东西已经破坏了 JVM 的执行模型。

您的应用程序是否包含任何本机代码?它是否使用任何带有本机代码组件的第三方库?如果两者都不是,那么这很可能是 JVM 的 Apple 端口中的错误。可能是 JIT 编译器的错误,也可能是某些 JVM 原生代码库中的错误。

对于这样的错误你能做些什么?

不是很多。

  • 通过逐步删除位来减少您的应用程序,直到您有一个显示问题的小测试用例。
  • 根据测试用例,看看是否有一些经验方法可以避免该问题。
  • 使用测试用例向 Apple 提交错误报告。

【讨论】:

  • 不,我的应用程序不包含任何本机代码,并且我没有使用任何第三方库。我会听从你的建议,让我们看看我需要多长时间才能找到错误。谢谢!
【解决方案2】:

还要确认您是在 the event dispatch thread 上构建 GUI,并且从未从任何其他线程更新 GUI 组件。

众所周知,相关错误很难重现,但与更改时间相关的更改具有暗示性。

【讨论】:

    【解决方案3】:

    我刚刚遇到这种情况,结果证明它与一段代码有关,该代码正在序列化一个带有对自身的循环引用的 JSON 对象。我删除了循环,错误消失了。我怀疑这与内存溢出错误有关,现在 Mac OSX 上较新的 JVM 处理方式不同。在这种情况下,我运行的是 Mac OSX 10.7。

    为了完整起见,我收到的错误是:

    Invalid access of stack red zone 0x10e586d30 rip=0x10daabba6
    Bus error: 10
    

    还有:

    Invalid memory access of location 0x10b655890 rip=0x10a8baba6
    Segmentation fault: 11
    

    【讨论】:

    • 我在使用 jackson 时遇到了类似的问题。通过使用@JsonIgnore 解决了我的问题
    【解决方案4】:

    请检查/etc/hosts是否为空,并验证是否包含这些配置:

    127.0.0.1       localhost
    255.255.255.255 broadcasthost
    ::1             localhost 
    fe80::1%lo0     localhost
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      相关资源
      最近更新 更多