尝试分配大于256 MB的缓冲区大小时,Java Segmentation出现故障

时间:2011-05-27 11:10:39

标签: java segmentation-fault nio

我正在使用64位JVM(Oracle),当我尝试分配大于256 MB的缓冲区大小时,它会抱怨并抛出“分段错误”错误。我使用java NIO分配直接内存缓冲区,并在同一台机器(Linux 64位)上与RMI客户机程序之间传输和接收这些对象。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

分段由于内存错误,程序(例如JVM)中发生故障。 JVM中有一个错误,它使得它在计算机上尝试使用错误的内存部分时,它会使用那么多缓冲区空间,或者尝试分配256M的内存,并且在此过程中它使用的空间比电脑给了它。简而言之,我觉得64位JVM并不是为了在当前设置下分配那么多空间而构建的。也许您可以尝试配置JVM,以便在启动之前从计算机请求更多内存。 jtahlborn关于你询问JVM上最大堆设置是什么的评论也是你在再次运行程序之前应该问的问题。

答案 1 :(得分:-1)

您是否尝试过错误报告中的以下解决方法?

  

之前运行System.gc()   ByteBuffer.allocateDirect()...