0

サイズ 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でメモリマップファイルを低リサイズするための提案? ありがとう。

4

0 に答える 0