Compression 内存中压缩的分配器

Compression 内存中压缩的分配器,compression,theory,allocator,Compression,Theory,Allocator,我想知道,是否有项目/至少有一些关于内存压缩和内存分配器组合的研究(当然是以牺牲一些速度为代价) 例如,想象一下这样的场景:我们必须处理一棵大树。这棵树记不住了。使用压缩分配器,我们可以适应任何树 当然,可以使用迭代方法,而无需立即构建树,但我的问题纯粹是理论性的(今天) 取消引用可能需要特殊的宏/模板,以便分配器能够解压缩选定的区域。但是,如果一个区域引用另一个区域,会怎么样。?必须有一些非常复杂的算法,可能只在托管语言中解决(但是Boehm能够为C++生成GC) 或者它太复杂/太慢(甚至与保

我想知道,是否有项目/至少有一些关于内存压缩和内存分配器组合的研究(当然是以牺牲一些速度为代价)

例如,想象一下这样的场景:我们必须处理一棵大树。这棵树记不住了。使用压缩分配器,我们可以适应任何树

当然,可以使用迭代方法,而无需立即构建树,但我的问题纯粹是理论性的(今天)

取消引用可能需要特殊的宏/模板,以便分配器能够解压缩选定的区域。但是,如果一个区域引用另一个区域,会怎么样。?必须有一些非常复杂的算法,可能只在托管语言中解决(但是Boehm能够为C++生成GC)

或者它太复杂/太慢(甚至与保存的内存相比),根本不值得? 虚拟内存和交换可能非常慢,特别是在垃圾收集环境中。最近一个1GB的应用程序使整个操作系统没有响应。。。因此,内核级机制并不一定有效

你可以把它想象成(我仍然试图向你保证这不是一个非常愚蠢的想法)快速用户模式Futex与慢速本机互斥、快速用户模式绿色线程的对立(就像在Erlang中,一台机器上有多达2000万个并发进程)与较慢的本机线程等相比。

有关压缩虚拟内存的一些相关想法,请参阅。这个想法有一个Linux实现()

我不认为在分配器中进行压缩是有意义的。分配器作业是返回我要求它分配的字节数(并避免堆碎片和所有其他jazz)。它不知道我要把什么数据放在内存中。如果内存非常紧张,那么应用程序应该执行内存内压缩

内存中压缩的一个很好的例子可以从记录的巧妙技巧中看出