我们的服务在 Linux 申请的内存不会立刻从物理内存划分出来。系统数据修改时,才会发现物理内存没有分配,此时 CPU 会产生缺页中断,操作系统才会以 page 为单位把物理内存分配给程序。系统这么设计,主要是为了降低系统的内存碎片,并且减少内存的浪费。 不过系统分配的页很小,一般是 4KB,如果我们一次需要把 1G 的数据插入到内存中,写入数据到这块内存时就会频繁触发缺页中断,导致程序响应缓慢、服务状态不稳定的问题。 所以,当我们确认需要高并发读写内存时,都会先申请一大块内存并填 0,然后再使用,这样可以减少数据插入时产生的大量缺页中断。我额外补充一个注意事项,这种申请大内存并填 0 的操作很慢,尽量在服务启动时去做。
相关推荐
Y***h1875 小时前
第二章 Spring中的Bean稚辉君.MCA_P8_Java5 小时前
DeepSeek 插入排序t***p9355 小时前
idea创建SpringBoot自动创建Lombok无效果(解决)d***81726 小时前
解决SpringBoot项目启动错误:找不到或无法加载主类无限大66 小时前
RBAC模型:像电影院选座一样管理权限,告别"一个用户配一个权限"的噩梦间彧6 小时前
在CI/CD流水线中如何集成自动化的发布验证和熔断机制?间彧6 小时前
如何处理蓝绿部署中的数据迁移和数据库版本兼容性问题?间彧6 小时前
什么是金丝雀/灰度发布间彧6 小时前
什么是蓝绿部署爷_7 小时前
Golang: sqlc 和 goose 最佳实践