我正在创建一个使用大型 mmap()
匿名内存块的软件,其中大部分未使用 - 它在那里用于 future 扩展。我目前正在使用 mmap()
分配它,然后告诉操作系统内核我实际上不需要使用 madvise(ptr, bytes, MADV_DONTNEED)
分配的页面>.
执行此 madvise()
调用有什么好处吗?我可以只使用 mmap()
分配内存吗?
我已经发现核心文件变得相当大,有很多 mmap()'d
内存,所以我处理 SIGSEGV
和一些其他信号和 munmap()
我不想留给核心文件的部分。
最佳答案
如果在 mmap
之后立即使用,则 MADV_DONTNEED
无效。
要避免 Linux 3.4 及更高版本上的核心转储膨胀,您可以将 madvise
与 MADV_DONTDUMP
一起使用。
关于linux - MADV_DONTNEED 在 mmap() 之后立即执行任何有用的操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57614416/