Tag: mappedbytebuffer

在内存有限的系统上写入大文件时,如何避免mapFailed()错误

我刚刚在opensrc库代码中遇到一个错误,该错误分配了一个大缓冲区来修改大型flac文件,错误只发生在使用Java 1.8.0_74 25.74-b02 32bit的具有3Gb内存的旧PC机上 最初我曾经只是分配一个缓冲区 ByteBuffer audioData = ByteBuffer.allocateDirect((int)(fc.size() – fc.position())); 但有一段时间我有它 MappedByteBuffer mappedFile = fc.map(MapMode.READ_WRITE, 0, totalTargetSize); 我(错误)的理解是映射缓冲区使用的内存少于直接缓冲区,因为整个映射缓冲区不必同时只在内存中使用。 但是这个答案说使用映射的字节缓冲区是一个坏主意,所以我不清楚它是如何工作的 Java大文件上载抛出java.io.IOException:映射失败 完整的代码可以在这里看到