我使用 jemalloc 3.6.0-11。我调用 posix_memalign 来分配一个非常大的块。分配后,我要求madvise(ptr, size, MADV_DONTDUMP);
将此分配从核心转储中排除。
在释放此内存之前,我调用madvise(ptr, size, MADV_DODUMP);
是因为我希望如果这些页面将在将来的分配中分配,它们将不会保持标记为 DONTDUMP。
问题是在大多数情况下,我刚刚释放的内存并没有返回给OS(即进程的虚拟内存仍然包括分配;在/proc//status中分配大小仍然是一个VmSize 的一部分);事实证明,核心转储是基于进程的虚拟内存的;所以释放内存后,释放的页面将包含在核心转储中。
有谁知道如何解决这个问题?
提前致谢!