80%的 Linux 使用者都不懂的内存问题
进程的内存申请与分配; 内存耗尽之后 OOM; 申请的内存都在哪? 系统回收内存;
1、进程的内存申请与分配
![](https://filescdn.proginn.com/5b0dbff7f479ca9d4a0c32ac518ef7b3/3244465569b40647fb148038a95b47e4.webp)
![](https://filescdn.proginn.com/2eff34c9e11ab807b785fff6445e3913/6d809074cc4799fb46feabd6a2fcfcf9.webp)
2、内存耗尽之后OOM
![](https://filescdn.proginn.com/117f84c979563b0a89fcd6cd4c21d7b8/b4ff5cdb4517ab46524af63f2e7a233a.webp)
/proc//oom_adj
分数来干预系统选择杀死的进程。![](https://filescdn.proginn.com/8db49525bb50ed43ce16cc9e4502bc53/b68dabfa1feacf7f81e8cc0869e23e72.webp)
![](https://filescdn.proginn.com/baadc9f8b59812386f3f2ebc88280871/2eb557e5c96c49ee122b03b5ef4cbfc4.webp)
3、系统申请的内存都在哪?
3.1 共享文件映射
![](https://filescdn.proginn.com/99cb0351937d704507e39166ff1362f3/f019cf52047f0dc4795fca5aa19a2026.webp)
![](https://filescdn.proginn.com/99095933f7526f235fd6bb0751cfe344/f09941851d910bd3f55254fed1248590.webp)
dd if=/dev/zero of=fileblock bs=M count=1024
![](https://filescdn.proginn.com/1bcdf333ccc9702c2dc61f97ef7b8edd/2f3f31a30a4ec876b81b764622bd3793.webp)
3.2 私有文件映射段
![](https://filescdn.proginn.com/c71a7f6a1892e32a659377f316c7cb43/df4c83be6f848e03b2583e09dd8c1982.webp)
echo 1 >> /proc/sys/vm/drop_caches
![](https://filescdn.proginn.com/7b740a971b5372f77e40a37fff930d4d/9ce385ee9b9759dc859d0353f7845bc9.webp)
3.3 私有匿名映射
![](https://filescdn.proginn.com/7f89fd0ec2c4a803e64229691d098a85/6d3bd861ccf97cffac63e960f83228ed.webp)
![](https://filescdn.proginn.com/5a3eb64167a17714b2cc6c3edc324465/133da08c61eb5241ba3ae941d4939ae1.webp)
3.4 共享匿名映射
![](https://filescdn.proginn.com/e1ef535fa12b15a18b47201aae43500e/77bb8b390744cc2e8e5ecde904d2f90e.webp)
![](https://filescdn.proginn.com/f6c52be0839397dff83148785c5d7200/e49232bcf42e25ca840af11903658438.webp)
4、系统回收内存
手动回收内存,之前也有演示过,即
echo 1 >> /proc/sys/vm/drop_caches
![](https://filescdn.proginn.com/409066e30f684dab4bc24ccfc77e8dac/4266666b9ee05ba3d0e37ff3d761d079.webp)
![](https://filescdn.proginn.com/68dfcba90438be14af801e45d9edeefc/e276811f60d5b76b111362a39ab0ef41.webp)
![](https://filescdn.proginn.com/7e33b7f20e42050a9286e3c7a01f7028/c95ddff9c1573f0959eff54fa443f41f.webp)
![](https://filescdn.proginn.com/38a100a7ff8c28307c23afd99f408240/9ee539f7875b97edbf46331c05ade852.webp)
4.3 共享内存
![](https://filescdn.proginn.com/5b36b7240bcc258d66281f98f209decc/cff4e03c4c35eac93abde641a71d86e6.webp)
shmem_kernel_file_setup
4.4 内存自动释放方式
![](https://filescdn.proginn.com/7373a479ec7ff72ed39c2b08d3d8d836/fc71793c2c48697970c1e53b0e927a07.webp)
total-vm:186660kB, anon-rss:9388kB, file-rss:4kB
文件映射:代码段,数据段,动态链接库共享存储段以及用户程序的文件映射段; 匿名映射:bbs段,堆,以及当 malloc 用 mmap 分配的内存,还有mmap共享内存段;
![](https://filescdn.proginn.com/864be10e46454c6135efd62c6ec1540f/58f78256d4254150c5f1882234ed423a.webp)
![](https://filescdn.proginn.com/23f072a884326d38cc2003bdd3862efc/f6c6869fe4f5ebaf4936be9aa845a461.webp)
5、总结
链接:http://luodw.cc/2016/08/13/linux-cache/
作者:罗道文的私房菜
(版权归原作者所有,侵删)
有收获,点个在看
评论