有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

尝试分配大于256 MB的缓冲区时出现Java分段错误

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

知道吗


共 (2) 个答案

  1. # 1 楼答案

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

    Run System.gc() before ByteBuffer.allocateDirect()...

  2. # 2 楼答案

    由于内存错误,程序(如JVM)中会出现分段错误。要么JVM有一个缺陷,当它启动时,它试图使用计算机上错误的内存部分,以使用那么多的缓冲空间,要么它试图分配256M的内存,在这个过程中,它使用的空间超过了计算机给它的空间。简而言之,在我看来,64位JVM的构建并不是为了用当前设置分配那么多空间。也许您可以尝试配置JVM,使其在启动前要求计算机提供更多内存。jtahlborn对您询问JVM上的最大堆设置是什么的评论也是您在再次运行程序之前应该问的问题