我将 MapDB 用于键值数据库以获得更好的性能。在 map.clear() 之后,我的文件没有在磁盘中删除。我需要在 remove() 或 clear() 方法之后回收磁盘空间。下面是我的代码片段。
public static void mapDBPerformanceonFileDBStack() throws Exception{
String fileName ="testdatabase.db";
DB db = DBMaker
.fileDB(fileName)
.closeOnJvmShutdown()
.make();
Map myMap = db.hashMap("testmap").keySerializer(Serializer.INTEGER).valueSerializer(Serializer.STRING).createOrOpen();
System.out.println("Intial mapsize :" +myMap.size());
for(int i=0;i<100000;i++){
myMap.put(i,"key added" );
}
db.commit();
System.out.println("mapsize after the addition :"+myMap.size());
myMap.clear();
System.out.println("mapsize after clear :"+myMap.size());
db.commit();
db.close();
}
map.clear() 后我的测试数据库文件大小未回收 - clear() 后大小相同。