- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 db4o 8.0。db4odatabase 文件大小为 21MB。数据库中有以下对象。
User : There is 1 user in db.
PostedMessage : There are 10000 postedMessages in db.
我删除了所有 10000 条 PostedMessages。然后我尝试对 db4o 数据库进行碎片整理。以下代码用于碎片整理。
private void processDefrag() {
try {
String dbpath = "D:\\db4oDatabase";
IdMapping mapping = new InMemoryIdMapping();
//new DatabaseIdMapping(dbpath); //use this if heap overflows
DefragmentConfig config = new DefragmentConfig(dbpath, dbpath+".bak", mapping);
config.storedClassFilter(new AvailableClassFilter());
config.forceBackupDelete(false);
config.objectCommitFrequency(1000);
Defragment.defrag(config);
System.out.println("Defrag completed");
} catch (IOException ex) {
ex.printStackTrace();
}
}
我的预期是 db4oDatabase 文件大小会回到 21 Kb。并且 db4oDatabase 中仍将包含 1 个用户对象。然而,在运行上面的代码之后,db4o 数据库变得完全空了。为什么会这样?
如何避免丢失其他未删除的对象(在本例中为 1 个用户对象)?对 db4o 数据库进行碎片整理的正确方法是什么?
最佳答案
如果因为找不到该类而不接受该类,您可以尝试编写 StoredClassFilter
你自己的,只接受所有 StoredClass
对象。
public class AcceptAllClassFilter implements StoredClassFilter {
@Override
public boolean accept(StoredClass storedClass) {
return true;
}
}
然后:
config.storedClassFilter(new AcceptAllClassFilter());
除非碎片整理过程自动删除没有 StoredClass
的所有内容,否则这将起作用。如果是这种情况,我们可能需要弄清楚为什么 User
类没有容器对应的 StoredClass
实例。
关于java - db4o Defragment 删除数据库中的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12355384/
我正在使用 db4o 8.0。db4odatabase 文件大小为 21MB。数据库中有以下对象。 User : There is 1 user in db. PostedMessage : Ther
我正在运行一个守护进程,它分析目录中的文件,然后删除它们。如果守护进程由于某种原因没有运行,文件就会堆积在那里。今天我在那个目录中有 90k 个文件。再次启动守护进程后,它处理了所有文件。 但是,目录
我正在制作一个技术工具包程序,这个“工具包”中包含一个按钮,可以在本地磁盘上运行碎片整理。目前我为此制作的批处理文件很简单,它只是运行一个基本的碎片分析: defrag C: /A 触发此按钮的 C#
我一直在研究 MongoDB。感觉不错。 我在集合中添加了一些索引,上传了一堆数据,然后删除了所有数据,我注意到索引没有改变大小,类似于报告的行为 here . 如果我打电话 db.repairDat
我正在看这样的东西: http://www.codeproject.com/Messages/2901324/Re-the-result-of-DefragAnalysis-method-in-csh
当输入 mongo shell 时,我收到警告 ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. **
我知道自己编写代码是微不足道的,但是如果它已经内置到 PHP 中,为了不需要维护更多代码,是否有用于“压缩”PHP 数组的内置函数?换句话说,假设我这样创建了一个数组: $array = array(
我从 mongodb 收到以下关于 THP 的警告 2015-03-06T21:01:15.526-0800 I CONTROL [initandlisten] ** WARNING: /sys/k
我是一名优秀的程序员,十分优秀!