我想知道,是否有项目/至少有一些关于内存压缩和内存分配器组合的研究(当然以牺牲一些速度为代价)?
例如,想象一下这样的场景:我们必须处理一棵巨大的树。这棵树不适合记忆。使用压缩分配器,我们几乎可以适应任何树。
当然,可以使用迭代方法而不立即构建树,但我的问题纯粹是理论上的(今天)。
可能取消引用需要特殊的宏/模板,以便分配器能够解压缩选定的区域。但是,如果一个区域引用另一个区域等怎么办?一定有一些非常复杂的算法,可能只能在托管语言中解决(但 Boehm 能够为 C++ 制作 GC!)
或者也许它是如此复杂/缓慢(甚至与节省的内存相比)根本不值得?虚拟内存和交换可能非常慢,尤其是在垃圾收集环境中。最近一个 1 gb 的应用程序使整个操作系统无响应......所以内核级机制不一定有效。
你可以把它想象成(我仍然试图向你保证这不是一个非常愚蠢的想法)作为反对快速用户模式 futexes 与慢速本机互斥锁,快速用户模式绿色线程(如在 Erlang 中具有多达 2000 万个同时进程)机器)与较慢的本机线程等。