我一年来一直致力于Java项目。我的代码已经好几个月了。几天前,我将Java SDK升级到Mac上的最新版本1.6.0_26(Snow Leopard 10.6.8)。升级后,发生了一些非常奇怪的事情。当我运行一些类时,我收到此错误:
位置0x202的内存访问无效rip = 0x202
但是,如果我用-Xint(解释)运行它们,它们可以工作,但速度很慢但工作正常。我在使用按位运算符(用于游戏奥赛罗的位板)的类中得到了这个问题。我不能在这里放任何代码,因为我没有得到错误,异常或类似的东西。我只是得到了令人讨厌的消息。
代码在没有-Xint的情况下运行是否正常但是它适用于它?我该怎么办?
提前致谢
答案 0 :(得分:4)
当JVM像这样开始崩溃时,这表明某些东西破坏了JVM的执行模型。
您的应用程序是否包含任何本机代码?它是否使用具有本机代码组件的任何第三方库?如果两者都不成立,则可能是这是JVM的Apple端口中的错误。它可能是JIT编译器错误,也可能是某些JVM本机代码库中的错误。
你可以对这样的bug做些什么?
不是很多。
答案 1 :(得分:4)
我刚刚遇到这种情况,结果发现它与一段代码相关,该代码序列化了一个带有循环引用的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
答案 2 :(得分:0)
同时验证您是否在the event dispatch thread上构建GUI,并且永远不会从任何其他线程更新GUI组件。
众所周知,相关错误难以复制,但与时间改变相关的变化具有启发性。
答案 3 :(得分:0)
请检查/etc/hosts
是否为空并验证其是否包含以下配置:
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost