免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6383 | 回复: 14
打印 上一主题 下一主题

大家看看我这个情况是不是内存泄露? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-02 18:10 |只看该作者 |倒序浏览
有一个程序运行一段时间 由于它占用内存太大 我把它停掉了
但是内存始终释放不了! 现在系统只剩23M内存了
Tasks:  67 total,   1 running,  66 sleeping,   0 stopped,   0 zombiei,  0.0%st
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  
Mem:   1027272k total,  1003512k used,    23760k free,     2980k buffer
Swap:  2553680k total,        8k used,  2553672k free,   960496k cached


2824 root      15   0  2160  992  800 R  0.3  0.1   0:11.80 top                                             
    1 root      15   0  2036  644  552 S  0.0  0.1   0:00.94 init                                             
    2 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0                                      
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0                                      
    4 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                       
    5 root      10  -5     0    0    0 S  0.0  0.0   0:05.08 event.....

现在的问题是:我如何知道这些内存用在哪里?然后又如何释放它们呢?
求教高手了

论坛徽章:
0
2 [报告]
发表于 2008-01-02 18:19 |只看该作者
不是你内存泄漏的问题, linux的内存不是用来看的, 而是拿来用的, 它是为了充分利用物理内存,建立各种cache,优化程序性能,减少磁盘操作.这一点和windows系统不同,windows系统中总是有很多内存空闲,即便是进行了大量的磁盘操作后.而linux中真正空闲的物理内存几乎就看不到.
关键是linux为了提高I/O性能, 就将一些内存用来作为cache, buffer了. 尽最大可能地使用内存.

论坛徽章:
0
3 [报告]
发表于 2008-01-03 01:50 |只看该作者
原帖由 scutan 于 2008-1-2 18:19 发表
不是你内存泄漏的问题, linux的内存不是用来看的, 而是拿来用的, 它是为了充分利用物理内存,建立各种cache,优化程序性能,减少磁盘操作.这一点和windows系统不同,windows系统中总是有很多内存空闲,即便是进行了大 ...

兄弟, 道理没错, 但得结合实际啊

  1. Mem:   1027272k total,  1003512k used,    23760k free,     2980k buffer
复制代码


确实是1003512k 内存已被占用, top后, 键入'M', 按内存使用排序看看

论坛徽章:
0
4 [报告]
发表于 2008-01-03 09:33 |只看该作者

回复 #3 isnowran 的帖子

谢谢你的建议 我已经按 M 键排序了  但似乎占内存最多的进程也不过是0.4% 也就是说
这些内存加起来根本都不到1000M那么多,更加奇怪的是system-monitor 里面的内存
占用显示只有180M , 我使用free 命令查看的结果跟TOP是一样的 只有20M的空闲


PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                          

2450 haldaemo   18   0  5644 3756 1616 S  0.0   0.4   0:02.54 hald                                             
2590 root            15   0  8168 2428 1928 S  0.0  0.2   0:02.17 sshd                                             
2590 root            15   0  8168 2428 1928 R  0.0  0.2   0:02.17 sshd                                             
2382 xfs              18   0  3792 1588  716 S  0.0   0.2   0:00.01 xfs                                             
2592 root            15   0  4624 1460 1184 S  0.0  0.1   0:00.69 bash                                             
2180 root            25   0 12692 1352  592 S  0.0  0.1   0:25.01 pcscd

[ 本帖最后由 loveoov 于 2008-1-3 14:06 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-01-03 10:20 |只看该作者
Mem:  1020156k av,  720676k used,  299480k free,       0k shrd,  169884k buff
       389588k active,             135984k inactive
Swap: 1052216k av,       0k used, 1052216k free                  241108k cached
大家先把内存分清楚,虚拟内存,缓存,cache都是可以被计算的,还有top命令所计算的是什么
抛砖引玉,请高手指点

论坛徽章:
0
6 [报告]
发表于 2008-01-03 10:37 |只看该作者

回复 #5 panyuanyong 的帖子

[root@localhost MC]# vmstat -s
      1027272     total memory
      1013744     used memory
        48908        active memory
       941752       inactive memory
        13528        free memory
         5256         buffer memory
       960100       swap cache
      2553680      total swap
            0            used swap
      2553680      free swap
         1084         non-nice user cpu ticks
            0            nice user cpu ticks
         1319        system cpu ticks
       193561      idle cpu ticks
         1769        IO-wait cpu ticks
          296         IRQ cpu ticks
        11543       softirq cpu ticks
            0           stolen cpu ticks
       587632      pages paged in
       431018      pages paged out
            0           pages swapped in
            0           pages swapped out
      2228440     interrupts
        44740       CPU context switches
   1199411924  boot time
         2691         forks

[ 本帖最后由 loveoov 于 2008-1-3 10:43 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-01-03 12:52 |只看该作者
原帖由 isnowran 于 2008-1-3 01:50 发表

兄弟, 道理没错, 但得结合实际啊

Mem:   1027272k total,  1003512k used,    23760k free,     2980k buffer


确实是1003512k 内存已被占用, top后, 键入'M', 按内存使用排序看看


嗯. 谢谢指出我的失误.

论坛徽章:
0
8 [报告]
发表于 2008-01-03 13:55 |只看该作者

回复 #7 scutan 的帖子

晕~~~

大哥 你帮忙我解决下问题啊
如果确有内存尚未释放 我如何得知这些内存被谁占有
又或者如何查看这些内存maps?

                      total       used       free     shared    buffers     cached
Mem:       1027272      984692   42580          0      22660     924360
-/+ buffers/cache:       37672     989600
Swap:      2553680          8         2553672

[ 本帖最后由 loveoov 于 2008-1-3 14:15 编辑 ]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
9 [报告]
发表于 2008-01-04 09:11 |只看该作者

回复 #8 loveoov 的帖子

try

  1. cat /proc/meminfo
复制代码

论坛徽章:
0
10 [报告]
发表于 2008-01-04 10:44 |只看该作者
理论上说,linux的可用内存为:
cached+buffer
从你第一帖里面看,2980k buffer,960496k cached。所以可用内存是很多的。在有新的应用需要内存是,cached的内存会被释放出来的。
内存是否真的不够,从swap的使用上就可以看出来。而你的swap用量为0。so,你的内存是够用的。


看实际情况,我也听说过存在内存“只吞不吐”的,个人觉得应该是应用程序的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP