精确度量Linux下查看进程占用多少内存存的方法

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
PostgreSQL 高校实验室,企业,社区大联盟才是未来的方向.
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(1447)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'精确度量Linux下进程占用多少内存的方法',
blogAbstract:'在Linux中,要了解进程的信息,莫过于从 proc 文件系统中入手去看。proc的详细介绍,可以参考内核文档的解读,里面有很多内容',
blogTag:'',
blogUrl:'blog/static/3',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:3,
permalink:'blog/static/3',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'PostgreSQL 高校实验室,企业,社区大联盟才是未来的方向.',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}linux 下如何查看某个进程内存的使用量? - ITeye问答
linux 下如何查看某个进程内存的使用量?
在Linux下用ps或者top可以查看每个进程占用内存情况。
但是它们显示的时候都完全包含共享库所占用的内存。例如进程1和2都使用一个共享库 3,3占用内存1m,那么在ps中,进程1占用的内存完全包含这1m,进程2也一样。在exmap这个工具中,它可以识别某个共享库被多少进程使用,因此 将所占用的内存平摊在各进程的内存使用量中。在上例中,1和2各用500k
除共享库外,它还可以识别某个文件由多少进程在打开以及在各个进程中的内存占用情况。
该程序依赖于exmap.ko该模块,使用时用insmod加载即可
可以用top命令试试
http://hi.baidu.com/javava/blog/item/343d28db4ee0.html
应该没法做到,因为很多的library(.so)是多进程共享的。
已解决问题
未解决问题请问Linux下一个进程一般能使用多大的内存空间?
[问题点数:20分,结帖人CSDN]
请问Linux下一个进程一般能使用多大的内存空间?
[问题点数:20分,结帖人CSDN]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|linux 系统性能分析(top命令)及更准确解读内存的占用率(free -m 命令)
时间: 15:23:11
&&&& 阅读:2112
&&&& 评论:
&&&& 收藏:0
标签:一、系统性能分析(top命令)&&&&top 命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,默认5秒刷新一下进程列表,所以类似于 Windows 的任务管理器。650) this.width=650;" src="http://my.csdn.net/uploads//_9855.jpg"
width="576" height="445" style="border:0" />系统整体当下的统计信息top命令显示的前五行是系统整体的统计信息。650) this.width=650;" src="http://my.csdn.net/uploads//_2341.jpg"
style="border:0" />第一行是信息,同的执行结果。eg.top& -& 15:09:51& up& 17& days& ,& 3:38& ,& 4& users& ,& load& average& :& 1.09& ,& 3.39& ,& 4.7615:09:51& 当前时间up 17 days , 3:38& 系统运行时间,格式为时:分4& users& 当前登录用户数load average : 1.09&,&3.39 , 4.76& 系统负载,即任务队列的平均长度。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值。第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。eg.Tasks& :& 115& total& ,& 1& running& ,& 114& sleeping& ,& 0stopped& ,& 0zombieCpu(s)& :& 16.1%& us& ,& 2.0%& sy& ,& 0.0%& ni& ,& 79.5%& id& ,& 1.4%& wa& ,& 0.0%& hi& ,& 1.0%& siTasks : 115 total& 进程总数1 running& 正在数114& sleeping&&数0& stopped&&数0& zombie&&僵尸进程数Cpu(s) : 16.1%& us& 用户空间占用CPU百分比2.0%& sy&&内核空间占用CPU百分比0.0%& ni& 用户进程空间内改变过优先级的进程占用CPU百分比79.5%& id& 空闲CPU百分比1.4%& wa& 等待输入输出的CPU时间百分比0.0%& hi0.0%& si最后两行为内存信息。eg.Mem& :& 8169876& k& total& ,& 7686472& k& used& ,& 483404& k& free& ,& 35272& k& buffersSwap& :& 4096532& k& total& ,& 160& k& used& ,& 4096372& k& free& ,& 2477532& k& cachedMem : 8169876 ktotal&&物理内存总量7686472 k&used& 使用的物理内存总量483404 k free& 空闲内存总量35272 k buffers& 用作的内存量Swap : 4096532 k total&&交换分区总量160 k used& 使用的交换区总量4096372 k free& 空闲交换区总量2477532 k cached&& 缓冲的交换区总量。内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。进程信息650) this.width=650;" src="http://my.csdn.net/uploads//_2137.jpg"
width="566" height="292" style="border:0" />统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。PID&&& USER&&& PR&&& NI&&& VIRT&&& RES&&&&SHR&&& S&&&&%CPU&&& %MEM&&& TIME+&&& COMMAND序号列名含义PID&&& 进程idPPID&&& 父进程idRUSER&&& RealusernameUID&&& 进程所有者的用户idUSER&&& 进程所有者的用户名GROUP&&& 进程所有者的组名TTY&&& 启动进程的终端名。不是从终端启动的进程则显示为?PR&&& 优先级NInice&&&& 值。负值表示高优先级,正值表示低优先级P&&& 最后使用的CPU,仅在多CPU环境下有意义%CPU&&& 上次更新到现在的CPU时间占用百分比TIME&&& 进程使用的CPU时间总计,单位秒TIME+&&& 进程使用的CPU时间总计,单位1/100秒%MEM&&& 进程使用的物理内存百分比VIRT&&& 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESSWAP&&& 进程使用的虚拟内存中,被换出的大小,单位kb。RES&&& 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATACODE&&& 可执行代码占用的物理内存大小,单位kbDATA&&& 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kbSHR&&& 共享内存大小,单位kbnFLT&&& 页面错误次数nDRT&&& 最后一次写入到现在,被修改过的页面数。S&&& 进程状态。D=&&& 不可中断的睡眠状态R=&&& 运行S=&&& 睡眠T=&&&&跟踪/停止Z=&&& 僵尸进程COMMAND&&& 命令名/命令行WCHAN&&& 若该进程在睡眠,则显示睡眠中的系统函数名Flags&&& 任务标志,参考sched.h按指定列来排序top里可以设置按照某一项来排序,默认的情况下,是按照CPU的使用情况来排序,M,(注意大写),按内存使用情况排序P , 根据CPU使用百分比大小进行排序T,& 根据时间/累计时间进行排序。如何结束进程输入字母k(小写),然后再输入想要kill的PID当然你也可直接运行命令,kill PIDtop其他用法top的其他用法,可以在top界面中,输"h",就可以进入到top命令帮助界面二、更准确解读内存的占用率(free命令)Linux下如何查内存信息,如内存总量、已使用量、可使用量。经常使用Windows操作系统的朋友,已经习惯了如果空闲的内存较多,心里比较踏实。当使用Linux时,可能觉的Linux物理内存很快被用光(如频繁存取文件后),当程序结束后内存没有被释放。空闲内存少的可怜,心里总不踏实。Linux操作系统的内存管理方式与Windows不同,Linxu会尽量多的利用内存,让尽可能多的内存参与工作(做cache)以提高性能。所以你看到的空闲内存总是很小,当你的程序需要更多内存时,Linxu系统会把做cache的内存还给你,让你来运行你的程序。图1650) this.width=650;" src="http://dl2.iteye.com/upload/attachment/cd507b7-9d5e-3bd8-a50d-fb6.jpg"
style="border:0" />&free -m :查看内存情况,(&-m&)表示单位为MB。total 内存总数used 已经使用的内存数(我的程序使用内存数量+系统缓存使用的内数量)free 空闲的物理内存数(是真正的空闲,未被任何程序占用)shared 多个进程共享的内存总额buffers 磁盘缓存(Buffer Cache)的大小(可提高系统I/O调用的性能)cached& 磁盘缓存(Page Cache)的大小(可提高系统I/O调用的性能)-buffers/cache 表示已被我们的程序使用的内存数,计算方法:used - buffers - cached+buffers/cache 表示还可已被我使用的内存数,计算方法:free + buffers + cached操作系统目前可用内存总量=free + buffers + cached,上图是1155Mbuffers是用来给块设备做的缓冲大小、buffers是用来存储目录里面有什么内容,权限等等cached用来给文件做缓冲,用来记忆我们打开的文件.即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存(free)会很少。其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用。如果你希望手动去释放Cache Memory也是有办法的。手动释放缓存---------------------------------------/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。操作如下:cat /proc/sys/vm/drop_caches&& 查看默认值先手动执行sync命令,sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。# echo 3 & /proc/sys/vm/drop_caches# cat /proc/sys/vm/drop_caches3将/proc/sys/vm/drop_caches值设为3再来运行free命令。可以看出来有效的释放了buffer和cache。标签:原文地址:http://ycgit.blog.51cto.com/2511
&&国之画&&&& &&&&chrome插件&&
版权所有 京ICP备号-2
迷上了代码!如何确定Linux下一个进程所占用的内存大小
如何确定Linux下一个进程所占用的内存大小?这看起来超简单,top或者ps一下就能看出来。今天研究了一下发现并没有这么简单,相反还比较复杂。
以TOP为例,它有若干指示内存占用的列,从man top里摘抄如下:
n: %MEM& && Memory usage (RES)
A task&s currently used share of available physical memory.
o: VIRT& && Virtual Image (kb)
The total amount of virtual memory used by the task.& It includes
all code, data and shared libraries plus pages that have been swapped
VIRT = SWAP + RES.
p: SWAP& && Swapped size (kb)
The swapped out portion of a task&s total virtual memory image.
q: RES& && Resident size (kb)
The non-swapped physical memory a task has used.
r: CODE& && Code size (kb)
The amount of virtual memory devoted to executable code, also known as the &text resident set& size or TRS.
s: DATA& && Data+Stack size (kb)
The amount of virtual memory devoted to other than executable code, also known as the &data resident set& size or DRS.
t: SHR& && Shared Mem size (kb)
The amount of shared memory used by a task.& It simply reflects memory that could be potentially shared with other processes.
首先是MEM大有深意。&share of available physical
memory&,意为可用物理内存的共享。这说明代表的是在真正的物理内存使用大小,不包括换页到swap上的部分。而且这个&share&说明这个大小
可能被多个进程共享,最典型的是父子进程。MEM就是RES/物理内存大小 * 100%
其次VIRT是&the total amount of virtual memory used by the task&,说明这是这个进程的使用整个进程空间大小。
再次SWAP是VIRT与RES的差值。意为被换页出去的内存大小。注意这和所使用的SWAP分区大小是不同的。
再次CODE和DATA分别代表代码段和数据与堆栈段,CODE+DATA与VIRT接近,但从观察的结果来看,不一定接近。
以进程pcmanx为例,CODE(248kb) + DATA(78mb) 远小于RES(10mb) + SWAP(243mb)。
这说明,进程空间往往远大于CODE+DATA。因为在执行过程中会free掉部分malloc出来的内存,进程空间没有减小,但DATA段大小减小。这样分析是否正确?
最后SHR看起来就没什么意义,因为&could be potentially shared with other processes&可能也就代表代码段和动态链接的库的大小?这只是我的猜测。
因此可以总结为,从RES看物理内存中的占用量,但这部分占用量是可能被&share&的;从VIRT看进程的进程空间大小,从DATA看进程现在所持有的数据大小。
请各位遵纪守法并注意语言文明}

我要回帖

更多关于 java进程占用内存过高 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信