我们的服务在 Linux 申请的内存不会立刻从物理内存划分出来。系统数据修改时,才会发现物理内存没有分配,此时 CPU 会产生缺页中断,操作系统才会以 page 为单位把物理内存分配给程序。系统这么设计,主要是为了降低系统的内存碎片,并且减少内存的浪费。 不过系统分配的页很小,一般是 4KB,如果我们一次需要把 1G 的数据插入到内存中,写入数据到这块内存时就会频繁触发缺页中断,导致程序响应缓慢、服务状态不稳定的问题。 所以,当我们确认需要高并发读写内存时,都会先申请一大块内存并填 0,然后再使用,这样可以减少数据插入时产生的大量缺页中断。我额外补充一个注意事项,这种申请大内存并填 0 的操作很慢,尽量在服务启动时去做。
相关推荐
我是大猴子1 天前
Spring代理类为何依赖注入失效?码事漫谈1 天前
手把手带你部署本地模型,让你Token自由(小白专属)码农BookSea1 天前
ReAct:让大模型学会边想边做码农BookSea1 天前
10分钟掌握 JSON-RPC 协议,面试加分、设计不踩坑凤年徐1 天前
C++手撕红黑树:从0到200行,拿下STL map底层核心IT_陈寒1 天前
Python的列表推导式里藏了个坑,差点让我加班到凌晨卷无止境1 天前
podman与docker的区别和生产环境最佳实践程途知微1 天前
ConcurrentHashMap线程安全实现原理全解析Mars酱1 天前
1分钟编写贪吃蛇 | JSnake贪吃蛇单机版卷卷说风控1 天前
养了10年风控,今年开始养「虾」了