| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> IOT开发的学习-linux#4内存 -> 正文阅读 |
|
[系统运维]IOT开发的学习-linux#4内存 |
Linux内存分为物理内存和虚拟内存。 物理内存是指实际的内存。 虚拟内存是指根据系统需要从硬盘中虚拟的划出一部分存储空间。是一种计算机系统的管理技术。 一般内存泄漏是指虚拟内存使用后没被释放,导致映射的实际存储空间被占用后释放不了,不能再次被使用。所以内存泄漏是看虚拟内存有没有持续增加。 内存使用情况可以用 ps aux命令查看,执行后可以看到以下结果: ========================================== USER ?PID %CPU %MEM ???VSZ ??RSS? ? TTY ???STAT START ??TIME COMMAND root ?????1921 ?0.4? ? ? ??0.6? ? ? ?11384 ?1036? ?? ???????Sl? ? ? ?11:10 ??0:00? ? ?process ========================================== ※VSZ就是虚拟内存,RSS就是实际内存。 ? 一般产品发布前会做running测试,看看有没有内存泄漏的倾向。 running时,可以写个脚本(sh),把内存情况记录在文件中方便查看,简单例: ========================================================================= while true; do path="/home/mem/memchk.txt" touch "/home/mem/memchk.txt" echo "USER PID %CPU %MEM ???VSZ ??RSS TTY ?????STAT START ??TIME COMMAND">>$path ????ps aux | grep -m 1 process1>> $path ????ps aux | grep -m 1 ?process2>> $path ????ps aux | grep -m 1 process3?>> $path ????# 100min once ????sleep 6000 ??fi?? done ※注意存储容量,限定退出时间或超过一定容量后覆盖 ========================================================================= 结果: USER ??????PID %CPU %MEM ???VSZ ??RSS TTY ?????STAT START ??TIME COMMAND root ?????1921 ?0.4 ?0.6 ?11384 ?1036 ? ???????Sl ??11:10 ??0:00 process1 root ?????1924 ?1.1 ?0.4 ?10244 ??652 ? ???????Sl ??11:10 ??0:00??process2 root ?????1942 ?0.9 ?1.0 ??7112 ?1684 ? ???????Sl ??11:10 ??0:00 ?process3 USER ??????PID %CPU %MEM ???VSZ ??RSS TTY ?????STAT START ??TIME COMMAND root ?????1921 ?0.1 ?0.6 ?11384 ?1036 ? ???????Sl ??11:10 ??0:00? ?process1 root ?????1924 ?1.1 ?0.4 ?10244 ??652 ? ???????Sl ??11:10 ??0:07??process2 root ?????1942 ?0.7 ?1.0 ??7112 ?1684 ? ???????Sl ??11:10 ??0:04?process3 =========================================================================※如果数据比较多可以拷贝到excel上生成折线图来看会直观一点。 running时,虚拟内存是稳定的,有增减,但不会一直增加。 如果发现虚拟内存有持续增加的倾向,就有可能内存泄漏,可以分析有没有使用完没有释放的做法。 比如 open没做close,Malloc没做Free等。 养成好的编程习惯会减少很多内存泄漏的错误,大量减少后续开发时间。 ※物理内存有时也会增加,这是因为有些路径还没有被跑到过,新跑时使用的内存会新分配,重复跑到不会增加,就没有问题。 ? ? ? ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 9:50:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |