高并发架构实战 Day 47

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

相关推荐
ᝰꫝꪉꪯꫀ3612 小时前
JavaWeb——Maven高级
java·后端·maven·springboot
轩情吖4 小时前
模拟实现Bash
linux·c语言·开发语言·c++·后端·bash·环境变量
李昊哲小课5 小时前
springboot整合hive
大数据·数据仓库·hive·spring boot·后端·数据分析
uhakadotcom6 小时前
Java JDK 23 最新更新:功能亮点与开发者必备指南
后端
uhakadotcom6 小时前
AI搜索引擎的尽头是电商?从perplexity开始卖货说起...
前端·人工智能·后端
uhakadotcom6 小时前
Java中的代码简化技巧:让开发更轻松
后端
uhakadotcom6 小时前
WAF绕过的10种技术:技术细节与代码详解
后端·程序员·架构
张声录16 小时前
使用client-go在命令空间test里面对pod进行操作
开发语言·后端·golang
新智元7 小时前
AI卷翻科研!DeepMind 36页报告:全球实验室被「AI科学家」指数级接管
人工智能·后端
Adolf_19937 小时前
Django 自定义路由转换器
后端·python·django