使用MappedByteBuffer要注意的问题

使用MappedByteBuffer来操作内存映射文件是NIO提供的强大武器,由于将对文件的操作映射到内存中,读写性能都会提高。需要注意的问题是,在MappedByteBuffer的javadoc中有这样一句:
* A mapped byte buffer and the file mapping that it represents remain
* valid until the buffer itself is garbage-collected.
这句话的意思如果一个MappedByteBuffer对象没有被垃圾回收,那么这个对象和他所代表的映射文件是一直有效的。
这意味着什么呢?这意味着一旦一个文件被映射为内存文件,即使你关闭了这个文件,该文件也无法再次被打开,直到文件所对应的MappedByteBuffer对象被GC,该文件会被系统释放,才可以再次打开。
目前没有有效方法解决这个问题,一个workaround是调用System.gc(),增加回收MappedByteBuffer对象的几率。然后sleep()几百毫秒,等待好消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值