去查看一个运行中的程序,到底是占用了多少内存

在linux下,查看一个运行中的程序,占用了多少内存_百度知道
在linux下,查看一个运行中的程序,占用了多少内存
我有更好的答案
使用top命令,这个类似任务管理器。或者使用ps -aux | grep xxx,xxx代表搜索关键字
采纳率:70%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有
&& (1). ps aux:
&& & 其中 &VSZ(或VSS)列 表示,程序占用了多少虚拟内存。
&& & & & & RSS列 表示, 程序占用了多少物理内存。
&& & & & & 虚拟内存可以不用考虑,它并不占用实际物理内存。
#ps auxUSER
PID %CPU %MEM
STAT START
TIME COMMANDroot
0:00 /sbin/initroot
0:01 [kthreadd]root
0:00 [migration/0]root
74:00 [ksoftirqd/0]root
0:00 [migration/0]root
0:09 [watchdog/0]root
0:15 [migration/1]root
0:00 [migration/1]root
42:05 [ksoftirqd/1]root
0:07 [watchdog/1]root
0:02 [migration/2]root
0:00 [migration/2]root
18:26 [ksoftirqd/2]root
0:06 [watchdog/2]
(2). top 命令也可以
&& & 其中 &VIRT(或VSS)列 &表示,程序占用了多少虚拟内存。 同 ps aux 中的 VSZ列
&& & & & & RES列&表示, 程序占用了多少物理内存。同 ps aux 中的RSS列
#toptop - 19:41:09 up 97 days, 10:44,
load average: 0.04, 0.01, 0.00Tasks: 424 total,
1 running, 423 sleeping,
0 stopped,
0 zombieCpu(s):
0.0%ni, 99.9%id,
0.0%stMem:
5963824k used, k free,
536076k buffersSwap: k total,
0k used, k free,
1859516k cached
SHR S %CPU %MEM
2762 jbossuse
0 17.4g 3.0g
1:48.00 java
12789 root
0:00.03 top
0:00.99 init
0:01.37 kthreadd
2.在linux下, 查看当前系统占用了多少内存, 一般的命令是 &free
其中, free就是系统还有多少内存可以使用。
但由于 linux 系统对内存使用有一个原则, 就是, 内存是宝贵的, 能使用多少就使用多少。 所以, linux会把已经调用过的包缓存起来,放在内存里。
这样,实际上,可以使用的内存,就可以理解为, free+buffers+cached
3.当你了解完这些命令以后, 再去使用ps aux 命令去查看的时候, 会发现一个奇怪的现象。
&所有的 &RSS 列的数据,加起来, 比物理内存的数要大很多。
&比如, 物理内存为2G, 而RSS列的数据加起来,可能有5个G之多, 这是怎么回事了?
&这是因为RSS列的值骗了我们。&
&linux的内存机制是这样的:
&在运行一个程序时, linux会调用该程序依赖的链接库, 如lib.xx.so。&首先看该链接库是否被映射进内存中,如果没有被映射,则将代码段与数据段映射到内存中,否则只是将其加入进程的地址空间。
&这样,当N个程序,依赖到lib.xx.so的时候, 实际上,内存中只有一个lib.xx.so ,而不是N个。&
&而RSS在显示一个程序占用的实际物理内存时, 将lib.xx.so也算了进来。
&比如, X程序, 本身占用内存为5M, lib.xx.so 占用内存2M,lib.xx.so被N个程序共享依赖。 则RSS显示为,X程序运行,占用内存为7M。 实际上, X程序占用了5M空间。 多余的2m被讨入到RSS中了。
&当你在用ps aux显示内存占用情况时, N个共享依赖lib.xx.so的N个程序,都把这2m空间,算在自己的RSS中了, 这样RSS的sum值,就比实际物理内存多了。
&当然, linux的内存使用机制很复杂, 不是一句两句能说清楚的。这里只是简单的说明了一下, ps aux中的RSS值, 并不能真实反映物理内存的使用情况。
4. 如果查看更详细的内存使用情况, 可用以下几种方法, 或者几种方法结合使用:
这几种方法,都需要root账户的权限
(1).&pmap -d $pid&
$pid 是正在运行的程序的pid
11:54 ? 00:01:48 /opt/wildfly/java64/jdk1.7.0_25/bin/java -D[Standalone] -server -Xms4096m -Xmx8192m -XX:MaxPermSize=512m -Djava.net.preferIPv4Stack=true -Dfile.......
(2). cat /proc/$pid/smaps
&&smaps的数据比较详细,可简单的归纳一下,归纳的命令如下:
&&cat /proc/$pid/smaps&&| awk '/Size|Rss|Pss|Shared|Private|Referenced|Swap/{val_name=gensub(/([a-zA-Z_]*).*/,"\\1",1,$1); list[val_name]+=$2; }END{for(val in list)print val,list[val];}' & & & & & & & & & &&
(3). cat /proc/$pid/maps
(4). cat /proc/$pid/statm
# cat /proc/2762/statm414
第一列 &size:任务虚拟地址空间大小第二列 &Resident:正在使用的物理内存大小第三列 &Shared:共享页数第四列 &Trs:程序所拥有的可执行虚拟内存大小第五列 &Lrs:被映像倒任务的虚拟内存空间的库的大小第六列 &Drs:程序数据段和用户态的栈的大小第七列 dt:脏页数量
阅读(...) 评论()怎么关闭一些无用的占内存的东西?
打开 “任务管理器”就右以看到某一软件的内存使用情况了,
如果不运行,但并没有关闭软件的话,它还是留在内存中的。
其他答案(共3个回答)
插紧凑会吸的阴道最舒服。阴道内壁会呈现出一种令人兴奋的滑流状态。爱液会从JJ四周缓缓流出,而且会随着一出一进的动作流遍阴唇,以及整个会阴,有时阴道似乎活了起来,...
卡巴斯基杀毒软件杀毒效果不错,不过相对比较吃资源,有时会导致开机速度变慢,国产杀毒软件杀毒效果并不差,并且比较全面,节省资源
那个说的是最低配置 如果是推荐配置就不会那样啦
新浪游戏爱问专家团
1GB=1024MB,看看您的所有硬盘现在还有多少GB?
一部电影约400MB,另外,每个盘符还需要留有至少15%的磁盘碎片整理空间。磁盘空间太少的话,会影响正...
一、关闭一些启动程序, 开始-运行-msconfig---启动 ,除杀毒软件、输入法外一般的程序都可以关掉。
二、禁用多余的服务组件 。右键单击“我的电脑”--...
答: 是记事本的,网络记事本的存储数据文件。不能转换成其他的文件。
答: “沉浸”是指人可以完全融入其中:各地的参与者通过网络聚集在同一个虚拟空间里,既可以随意漫游,又可以相互沟通,还可以与虚拟环境交互,使之发生改变
答: 应该不是的吧
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:1234567891011121314150}{else}no-cache{/if}" />
Linux下查看某一个程序所使用的内存方法
Linux下查看某一个程序所使用的内存方法
PoisonApple 发表于
Linux下查看某一个程序所使用的内存方法
PoisonApple 发表于
  Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。
  Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
  这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。
  Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
  Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
  Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
  linux常用命令及技巧
  通用命令:
  1. date :print or set the system date and time
  2. stty -a: 可以查看或者打印控制字符(Ctrl-C, Ctrl-D, Ctrl-Z等)
  3. passwd: print or set the system date and time (用passwd -h查看)
  4. logout, login: 登录shell的登录和注销命令
  5. pwd: print or set the system date and time
  6. more, less, head tail: 显示或部分显示文件内容。
  7. lp/lpstat/cancel, lpr/lpq/lprm: 打印文件。
  8. 更改文件权限: chmod u+x.。。
  9. 删除非空目录:rm -fr dir
  10.拷贝目录: cp -R dir
  11. fg jobid :可以将一个后台进程放到前台。
  Ctrl-z 可以将前台进程挂起(suspend), 然后可以用bg jobid 让其到后台运行。
  job & 可以直接让job直接在后台运行。
  12. kill 的作用: send a signal to a process. eg: kill -9 发送的是SIG_KILL信号。。。 具体发送什么信号 可以通过 man kill 查看。
  13. ps 的用法, ps -e 或 ps -o pid,ppid,session,tpgid, comm (其中session显示的sessionid, tpgid显示前台进程组id, comm显示命令名称。)
  Linux下查看某一个程序所使用的内存方法
  第一种方式
  top -p 进程号1
  [yzy@node3 micro-service]$ top -p 20490
  top - 16:50:32 up 6 days, 2:18, 1 user, load average: 0.00, 0.01, 0.05
  Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
  %Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  KiB Mem :
free, 9988408 used, 3989272 buff/cache
  KiB Swap:
free, 0 used.
  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  20490 yzy 20 0 2 1272 S 0.0 0.0 0:35.50 sh
  第二种方式
  ps -aux | grep 进程名1
  [zhoulu@node3 micro-service]$ ps -aux | grep eureka-auto.sh
  zhoulu
pts/0 S+ 16:49 0:00 grep --color=auto eureka-auto.sh
  zhoulu
0.0 2 ? S Apr14 0:35 /bin/sh 。/eureka-auto.sh123
  第三种方式
  cat /proc/进程号/status1
  [zhoulu@node3 micro-service]$ cat /proc/20490/status
  Name: sh
  State: S (sleeping)
  Tgid: 20490
  Ngid: 0
  Pid: 20490
  PPid: 1
  TracerPid: 0
  Uid: 19 1019
  Gid: 19 1019
  FDSize: 256
  Groups: 1019
  VmPeak: 113256 kB
  VmSize: 113252 kB
  VmLck: 0 kB
  VmPin: 0 kB
  VmHWM: 1632 kB
  VmRSS: 1632 kB
  VmData: 340 kB
  VmStk: 136 kB
  VmExe: 884 kB
  VmLib: 2044 kB
  VmPTE: 52 kB
  VmSwap: 0 kB
  Threads: 1
  SigQ: 0/257254
  SigPnd: 0000
  ShdPnd: 0000
  SigBlk: 0000
  SigIgn: 0005
  SigCgt: 0002
  CapInh: 0000
  CapPrm: 0000
  CapEff: 0000
  CapBnd: 0000001fffffffff
  Seccomp: 0
  Cpus_allowed: ffff
  Cpus_allowed_list: 0-15
  Mems_allowed: 000001
  Mems_allowed_list: 0
  voluntary_ctxt_switches: 102189
  nonvoluntary_ctxt_switches: 404142
  VmSize(KB) 任务虚拟地址空间的大小 (total_vm-reserved_vm),其中total_vm为进程的地址空间的大小,reserved_vm:进程在预留或特殊的内存间的物理页
  VmLck(KB) 任务已经锁住的物理内存的大小。锁住的物理内存不能交换到硬盘 (locked_vm)
  VmRSS(KB) 应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss)
  VmData(KB) 程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据; (total_vm-shared_vm-stack_vm)
  VmStk(KB) 任务在用户态的栈的大小 (stack_vm)
  VmExe(KB) 程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库 (end_code-start_code)
  VmLib(KB) 被映像到任务的虚拟内存空间的库的大小 (exec_lib)
  VmPTE 该进程的所有页表的大小,单位:kb
  Threads 共享使用该信号描述符的任务的个数,在POSIX多线程序应用程序中,线程组中的所有线程使用同一个信号描述符
  1、VmRSS是真实正在占用的内存,而VmData是虚拟内存,大小差异大并没有什么问题。
  2、VmData是指数据段的内存大小,存放初始化了的数据; (total_vm-shared_vm-stack_vm)
  3、不调动态库的时候是不计算的(dlopen方式)
  4、静态库会编译为程序本身的一部分,不在VmLib的统计之内。
  5、参考上面的说明
  6、除非有非常明显的内存泄露,如内存一直大幅度增长并长时间不释放,否则单纯以来这些值是很判断真正的内在泄露。
文章来源栏目
加载更多评论
后参与评论

我要回帖

 

随机推荐