Rust 使用MALLOC_mmap_阈值从mmap分配大型结构_

Rust 使用MALLOC_mmap_阈值从mmap分配大型结构_,rust,malloc,Rust,Malloc,我有一个大结构(~200Mb),我使用serde_JSON从Java的一个大JSON文件反序列化,当新数据可用时,这种反序列化再次发生。该结构具有Vecs、字符串的HashMap、字符串的结构等 在查看时,我发现可以设置环境变量MALLOC\u MMAP\u THRESHOLD\u,以控制MALLOC必须请求多少分配才能使用MMAP进行分配。我想从mmap分配我的结构,因为堆在重新加载期间导致内存碎片。我希望旧的释放内存(用新的反序列化结构替换的内存)立即返回到系统(而不是由mallocaren

我有一个大结构(~200Mb),我使用serde_JSON从Java的一个大JSON文件反序列化,当新数据可用时,这种反序列化再次发生。该结构具有
Vec
s、字符串的
HashMap
、字符串的结构等

在查看时,我发现可以设置环境变量
MALLOC\u MMAP\u THRESHOLD\u
,以控制MALLOC必须请求多少分配才能使用MMAP进行分配。我想从mmap分配我的结构,因为堆在重新加载期间导致内存碎片。我希望旧的释放内存(用新的反序列化结构替换的内存)立即返回到系统(而不是由mallocarenas保留)


有没有办法做到这一点?我应该使用其他数据格式吗?

您的问题似乎可以通过的答案来回答。如果没有,请回答您的问题以解释差异。否则,我们可以将这个问题标记为已回答。您发现了一个您认为会有帮助的环境变量,那么在尝试它时会发生什么?您可以控制生成的JSON吗?200Mb JSON文件似乎错误。200Mb JSON文件表示作业的格式错误。。。为什么你总是需要把这些都记在记忆里?你不能在内存中保留子元素的位置并使用流解析器+LRU结构吗?@SébastienRenauld-是的,整个数据都需要在内存中。它可以在空闲时保存到磁盘,但在需要时,所有这些都需要可用。