サイズ X のファイルをメモリにマッピングした後、ファイル サイズを縮小できません。
最初に:
ByteBuffer bMapData;
RandomAccessFile rFile;
rFile = new RandomAccessFile(file, "rw");
rFile.setLength(65535);
bMapData=rFile.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, 65535);
プロセスが終了したら、ファイル サイズを調整する必要があります。残念ながら、Java のマップを解除し、ファイルのサイズを変更して (初期サイズより小さく) 例外を生成する方法はありません。
rFile.setLength(2048); //generate a exception (because is memory mapped)
マッピングを「削除」してガベージ コレクターを強制しようとしましたが、例外も生成されます (常にではありません)。
bMapData = null;
System.gc();
rFile.setLength(2048); // in some cases, generate a exception
bMapData=rFile.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, 2048);
Javaでメモリマップファイルを低リサイズするための提案? ありがとう。