madvise、fadvise、posix_madvise和posix_fadvise函数的使用
系统调用madvise的作用:建议内核如何使用指定段的内存。函数原型如下:
#include <sys/mman.h> int madvise(void *addr, size_t length, int advice); |
参数advice的取值有如下几种:
MADV_NORMAL |
|
MADV_RANDOM |
|
MADV_SEQUENTIAL |
|
MADV_WILLNEED |
|
MADV_DONTNEED |
|
MADV_REMOVE |
2.6.16内核引入。 |
MADV_DONTFORK |
2.6.16内核引入。 |
MADV_DOFORK |
2.6.16内核引入。 |
MADV_HWPOISON |
2.6.32内核引入。 |
MADV_UNMERGEABLE |
2.6.32内核引入。 |
MADV_MERGEABLE |
2.6.32内核引入。 |
MADV_SOFT_OFFLINE |
2.6.33内核引入。 |
MADV_HUGEPAGE |
2.6.38内核引入。 |
MADV_NOHUGEPAGE |
2.6.38内核引入。 |
MADV_DONTDUMP |
3.4内核引入。 |
MADV_DODUMP |
3.4内核引入。 |
m表示memory,f表示file,因此madvise是针对内存,而fadvise是针对文件。
Posix也有个类似的函数posix_madvise和posix_fadvise:
#include <sys/mman.h> int posix_madvise(void *addr, size_t len, int advice);
#include <fcntl.h> int posix_fadvise(int fd, off_t offset, size_t len, int advice); |
更多详情请浏览:http://man7.org/linux/man-pages/man2/madvise.2.html,或执行man madvise命令。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义