Linux内存
来源:互联网 发布:sem与seo的区别 编辑:程序博客网 时间:2024/06/06 12:49
4. 查看系统内存
free -m
如图所示,红线框中used表示当前系统内存使用量,free表示当前系统内存剩余量,单位M
3. 查看进程内存
ps -e -o cmd,sz,rsz,vsz | grep proc_name | awk '{print $2/1024, $3/1024, $4/1024}'
参数
rsz对应值即进程实际内存用量,直接影响free -m的结果
vsz对应值即进程虚拟内存用量,对free -m不具有任何影响
sz对应值目前无价值
示例
free -m的结果为
开始运行main,查看进程内存
进程main实际内存400M,则系统内存剩余量会相应扣除400M
可以看到main进程的虚拟内存为9G,大于系统内存总量,故vsz对应的进程虚拟内存用量与free -m无任何关系,或大或小都不会影响free -m的结果
2. vsz虚拟内存用量
栈
程序在编译阶段,即开始计算进程的虚拟内存用量。
程序一运行,即便没有执行到,或者直接跳过不执行,main进程的虚拟内存即为5.6G,而不管此时系统总的内存大小可能只是4G的事实。
释放
如同实际内存用量,栈空间一旦转化为虚拟内存,则不会轻易释放。待到系统内存吃紧时,系统可能开始回收。(未验证)
即可能存在如下情况:跳出作用域后,局部对象应该销毁,但其对应的虚拟内存并未减少。
堆
以程序执行堆分配的代码为准,执行到就加虚拟内存,没有执行到就不加。
释放
空间释放后,虚拟内存归还系统。
调用delete释放堆空间后,进程虚拟内存即刻减少对应值。
如上所述,同样适用于malloc-free
1. rsz实际内存用量
栈
栈空间转化为实际内存的条件:
a. 从栈申请空间
b. 对申请到的空间赋值
赋值包括
申请空间时的初始化,如
int arr[100*1024*1024] = {0};
程序中使用,如
释放
栈空间一旦转化为实际内存,则非必要不释放。
待到系统内存吃紧时,系统可能开始回收。(未验证)
如
堆
堆空间转化为实际内存的条件:
a. 申请堆空间
b. 对空间赋值
赋值包括
申请空间时的初始化,如
int num = 100 * 1024 * 1024;
int *arr = new int[num]();
程序中使用,如
释放
空间释放后,实际内存归还系统。
调用delete释放堆空间后,进程实际内存即刻减少对应值,系统(free -m)即刻增加对应值。
如上所述,同样适用于malloc-free
- linux内存--高端内存
- Linux 内存
- Linux 内存
- Linux 内存
- linux 内存
- linux 内存
- linux内存
- Linux内存
- Linux:内存
- [Linux] Linux内存机制
- linux内存管理--内存回收
- [linux内存]linux内存学习(一)
- linux内存管理--linux内核高端内存
- linux内存管理--linux内核高端内存
- [Linux内存]linux内存分配函数总结
- linux内存管理--linux内核高端内存
- Linux内存描述之高端内存--Linux内存管理(五)
- 【Linux】浅谈Linux内存管理机制
- 删数字nyoj448
- Rust基础笔记:闭包
- 2015 11 05 枚举
- 堆排序算法之Java实现
- 【OpenCV】角点检测
- Linux内存
- C#中Math.Round()实现中国式四舍五入
- codeforces 593 D. Happy Tree Party (LCA + 并查集)
- intellij idea下搭建android环境遇到的rendering problem问题及部分解决方式
- 疯狂HTML-01
- request body stream exhausted错误解决方案
- MyBatis使用Collection查询多对多或一对多结果集bug
- hibernate与mybatis异同与比较(涵盖网上各个版本,清晰明了)
- 漫谈CSS transform动画技术