EHCACHE磁盘分配算法

时间:2013-12-02 04:35:00

标签: java algorithm file ehcache

我正在通过EHCACHE实现他们如何进行磁盘分配。

它首先将Element序列化为Byte数组,而不是通过调用方法来调用空格:allocator.alloc(size)

WHERE size是字节数组的大小。

此处allocatorFileAllocationTree的实例,所以我怀疑FileAllocationTree如何从文件中分配一个空闲区域,我发现他们正在使用AATree获取可用空间管理,因此他们如何隔离树中的空间。

修改

我会更具体地提出我的问题:想知道ehcache如何通过类AATreeSet实现的AA树管理自由空间

感谢。

1 个答案:

答案 0 :(得分:0)

我们可以知道AA树是红黑树的简化形式(自平衡二元搜索树),请参阅Wikipedia

  

红黑树需要考虑七种不同的形状才能正确平衡树。

,而

  

另一方面,AA树只需要考虑两个形状,因为严格要求只有正确的链接可以是红色。

在这里,我们需要使用自平衡二进制搜索树来管理我们的可用空间,帮助我们插入,删除和搜索(最大,最小和一些适当的)可用空间。

我相信没有特殊原因EHCACHE使用AA树集来管理自由空间。他们只需要一个自平衡的二叉搜索树,然后选择一个易于实现的搜索树。我们可能会看到FileAllocationTree和AATreeSet都有类似的方法,如“insert”,“delete”和“search”。

EHCACHE使用自平衡BST来充分利用其平均高性能的插入,删除和搜索功能,此BST的每个节点代表一系列可用空间,节点的值代表免费空间的大小空间即可。然而,我没有统计数据来证明这种高性能。我相信它可能比散列表(在上/下限搜索上)和本机二叉树(在自我平衡上)更好。

顺便说一句,自平衡二进制搜索树用于管理内存空间,而B+ tree通常用于管理磁盘空间(文件系统和数据库),由于它的高扇出和廉价的迭代迭代。