高并发架构实战 Day 47

我们的服务在 Linux 申请的内存不会立刻从物理内存划分出来。系统数据修改时,才会发现物理内存没有分配,此时 CPU 会产生缺页中断,操作系统才会以 page 为单位把物理内存分配给程序。系统这么设计,主要是为了降低系统的内存碎片,并且减少内存的浪费。 不过系统分配的页很小,一般是 4KB,如果我们一次需要把 1G 的数据插入到内存中,写入数据到这块内存时就会频繁触发缺页中断,导致程序响应缓慢、服务状态不稳定的问题。 所以,当我们确认需要高并发读写内存时,都会先申请一大块内存并填 0,然后再使用,这样可以减少数据插入时产生的大量缺页中断。我额外补充一个注意事项,这种申请大内存并填 0 的操作很慢,尽量在服务启动时去做。

相关推荐
间彧2 分钟前
Spring Cloud Gateway详解与应用实战
后端
EnCi Zheng1 小时前
SpringBoot 配置文件完全指南-从入门到精通
java·spring boot·后端
烙印6011 小时前
Spring容器的心脏:深度解析refresh()方法(上)
java·后端·spring
Lisonseekpan2 小时前
Guava Cache 高性能本地缓存库详解与使用案例
java·spring boot·后端·缓存·guava
3 小时前
JUC专题 - 并发编程带来的安全性挑战之同步锁
后端
凯哥19703 小时前
迁移PostgreSQL数据库教程
后端
Ray663 小时前
单例模式
后端
用户8356290780513 小时前
掌控PDF页面:使用Python轻松实现添加与删除
后端·python
无责任此方_修行中3 小时前
谁动了我的数据?一个 Bug 背后的“一行代码”真凶
后端·node.js·debug
用户47949283569153 小时前
面试官:讲讲2FA 双因素认证原理
前端·后端·安全