我们的服务在 Linux 申请的内存不会立刻从物理内存划分出来。系统数据修改时,才会发现物理内存没有分配,此时 CPU 会产生缺页中断,操作系统才会以 page 为单位把物理内存分配给程序。系统这么设计,主要是为了降低系统的内存碎片,并且减少内存的浪费。 不过系统分配的页很小,一般是 4KB,如果我们一次需要把 1G 的数据插入到内存中,写入数据到这块内存时就会频繁触发缺页中断,导致程序响应缓慢、服务状态不稳定的问题。 所以,当我们确认需要高并发读写内存时,都会先申请一大块内存并填 0,然后再使用,这样可以减少数据插入时产生的大量缺页中断。我额外补充一个注意事项,这种申请大内存并填 0 的操作很慢,尽量在服务启动时去做。
相关推荐
何中应7 分钟前
请求头设置没有生效NPE~10 分钟前
自动化工具Drissonpage 保姆级教程(含xpath语法)宋小黑1 小时前
JDK 6到25 全版本网盘合集 (Windows + Mac + Linux)念何架构之路1 小时前
Go进阶之panic先跑起来再说1 小时前
Git 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成码农阿豪1 小时前
Flask应用上下文问题解析与解决方案:从错误日志到完美修复威迪斯特2 小时前
Flask:轻量级Web框架的技术本质与工程实践毕设源码-钟学长2 小时前
【开题答辩全过程】以 基于Springboot的扶贫众筹平台为例,包含答辩的问题和答案程序员良许3 小时前
三极管推挽输出电路分析Java水解3 小时前
【JAVA 进阶】Spring AOP核心原理:JDK与CGLib动态代理实战解析