为什么没有创建h2mvstore堆外存储文件



我使用以下代码尝试MVStore堆外存储:

OffHeapStore offHeap = new OffHeapStore();
MVStore s = new MVStore.Builder().fileName("c:\temp\h2.cache").fileStore(offHeap).open();
int count = 100;
Map<Integer, String> map1 = s.openMap("u1");
for (int i = 0; i < count; i++) {
map1.put(i, "Hello " + i);
}
s.commit();
int size1 = map1.size();
s.close();
System.out.println("=====");
MVStore s2 = new MVStore.Builder().fileStore(offHeap).open();
map1 = s2.openMap("u1");
for (int i = 0; i < size1; i++) {
System.out.println("M1>"+i+","+map1.get(i));
}
s2.close();

代码似乎有效。在代码执行之后;c: \temp\h2.cache"未创建。为什么?

OffHeapStore位于进程的内存中,但位于Java堆之外。使用自定义.fileStore(something)时,.fileName(something)将被静默忽略。

如果要将数据存储在磁盘上,则需要删除OffHeapStore的初始化、两个.fileStore(offHeap)调用,并将缺少的.fileName("c:\temp\h2.cache")调用添加到第二个MVStore.Builder()

最新更新