当前位置: 首页 > 面试题库 >

Java中位置的无效内存访问

南宫兴德
2023-03-14
问题内容

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

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

但是,如果我使用-
Xint(已解释)运行它们,它们会工作,但速度较慢,但​​效果很好。我在使用按位运算符(游戏Othello的位板)的类中遇到了这个问题。我无法在此处放置任何代码,因为我没有收到错误,异常或类似内容。我刚收到那条烦人的消息。

没有-Xint而不运行代码是正常的吗?我该怎么办?

提前致谢


问题答案:

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

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

这样的错误您该怎么办?

不是很多。

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


 类似资料:
  • 使用JNA时,我在调用方法时收到无效内存访问错误。 下面是我映射DLL的接口: 我有另一个带有常量的类: 以下是代码中出现的位置: 我知道1假设立即落在类型在dll中不匹配的事实上。但是头文件明确说明返回类型是int: lpszUserName是指向包含用户名的ASCIIZ字符串的指针。 pszUserPassword是一个指向包含用户密码的ASCIIZ字符串的指针。 lpszDesc是一个指向缓

  • 我正在使用tess4j.jar编写一个程序。该程序正在从图像中提取文本及其位置。我得到这个错误: 有趣的是,它不会出现在每张图片上。有人知道我哪里出错了吗? 这是我的代码:

  • 问题内容: 我的磁盘中有40MB的文件,我需要使用字节数组将其“映射”到内存中。 最初,我认为将文件写入ByteArrayOutputStream是最好的方法,但我发现在复制操作期间的某个时刻它会占用约160MB的堆空间。 有人知道不使用三倍于RAM的文件大小的更好方法吗? 更新: 感谢您的回答。我注意到我可以减少内存消耗,告诉ByteArrayOutputStream初始大小比原始文件的大小稍大

  • 问题内容: 在64位平台上,一个人可以为java分配的最大堆空间是多少?无限吗? 问题答案: 理论上是2 64,但是可能会有限制(显然) 根据此常见问题解答,它仅受本地系统上的内存和交换空间的限制: 在64位VM上,您具有64位可寻址性,因此可产生的最大Java堆大小仅受系统提供的物理内存和交换空间的数量限制。 另请参见为什么使用32位JVM无法获得更大的堆? 另外请记住,您需要通过命令行设置最大

  • JVM内存分为:1.方法区2.堆区3.堆栈4.PC寄存器5.本机堆栈 > 现在假设我有一个属性为“int[]dealCodes”(int基元数组)的类。根据内存管理,一旦处理代码初始化,内存中就会有连续内存分配(total_elements*4字节)。所以,如果数组大小为10,则JVM内存中有40字节的分配。 我的问题是,这40个字节将分配到哪个区域(堆还是堆栈)? 我对数组的理解是:它就像任何其

  • 我是Java新手,刚刚下载了Eclipse并编写了我的第一个Hello World程序 我想知道包java.util的存储位置是什么?这个包存储在我的电脑上的哪里?我使用苹果电脑。