Java分段错误
问题描述:
我正在使用64位JVM(Oracle),当我尝试分配大于256 MB的缓冲区时,它会发出抱怨并引发“分段错误”错误。我使用Java NIO分配直接内存缓冲区,并在同一台机器上(Linux 64位)将这些对象传入和接收RMI客户机程序。Java分段错误
有什么想法?
答
您是否从错误报告中尝试了以下解决方法?
运行System.gc()的前 ByteBuffer.allocateDirect()...
答
段错误发生在程序(如JVM)由于内存错误。无论是JVM有一个错误,它使得它尝试使用计算机上的错误的内存部分,当它开始使用那么多的缓冲区空间,或者它试图分配256M的内存,并在这个过程中使用更多的空间电脑给了它。总之,在我看来,64位JVM并不是用它的当前设置来分配那么多空间的。也许您可以尝试配置JVM,以便在启动之前从计算机请求更多内存。 jtahlborn对您询问JVM上最大堆设置的内容是您在再次运行该程序之前应该询问的问题的评论。
你能发表一些代码吗? – 2011-05-27 11:17:31
你的最大堆设置是什么? – jtahlborn 2011-05-27 11:37:31
只有在JNI库或JVM中存在缺陷时才会出现分段错误。我会尝试的第一件事是确保您有Java 6更新25或最新版本。 – 2011-05-27 11:44:54