高并发架构实战 Day 47

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

相关推荐
程序员爱钓鱼1 天前
Go输出与格式化核心库:fmt包完整指南
后端·面试·go
lars_lhuan1 天前
Go map 与并发
后端·golang
Lewiis1 天前
Go语言的错误处理机制
开发语言·后端·golang
Gopher_HBo1 天前
Go并发原子操作 waitGroup 对象池
后端
苦瓜小生1 天前
【黑马点评学习笔记 | 实战篇 】| 10-用户签到+UV统计
笔记·后端·学习
Victor3561 天前
MongoDB(54)分片的优缺点是什么?
后端
Victor3561 天前
MongoDB(55)如何监控分片集群?
后端
SuniaWang1 天前
《Spring AI + 大模型全栈实战》学习手册系列·专题一:《RAG技术全景解析:从原理到架构设计》
java·javascript·人工智能·spring boot·后端·spring·架构
计算机学姐1 天前
基于SpringBoot的流浪动物救助收养系统
vue.js·spring boot·后端·mysql·java-ee·intellij-idea·mybatis
代码探秘者1 天前
【算法篇】1.双指针
java·数据结构·人工智能·后端·python·算法