LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 872|回复: 4

有什么方法可以释放内存.

[复制链接]
发表于 2003-6-18 16:52:39 | 显示全部楼层 |阅读模式
我的DELL2650服务器,双至强2.8G,4G内存,linux7.3.每次运行一个进程后,会耗掉几百兆内存,运行完后,用TOP查看没有释放内存,继续运行新的进程,内存占用率依次迭加,最后耗光4G后死机,40台服务器全是这样.在不重起的情况下,有什么方法可以释放内存.



4:49pm  up 1 day,  7:06, 16 users,  load average: 0.00, 0.03, 0.26
112 processes: 111 sleeping, 1 running, 0 zombie, 0 stopped
CPU0 states:  0.1% user,  0.2% system,  0.0% nice, 99.2% idle
CPU1 states:  0.0% user,  0.0% system,  0.0% nice, 100.0% idle
CPU2 states:  0.0% user,  0.0% system,  0.0% nice, 100.0% idle
CPU3 states:  0.0% user,  0.0% system,  0.0% nice, 100.0% idle
Mem:  4004216K av,  419484K used, 3584732K free,       0K shrd,    3996K buff
Swap: 2097136K av,   29612K used, 2067524K free                  367964K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
6275 zhoubin   15   0   808  752   560 S     0.1  0.0   0:09 top
6406 frontend  15   0  1172 1172   928 S     0.1  0.0   0:01 top
6461 root      15   0  1152 1152   908 R     0.1  0.0   0:00 top
    1 root      15   0   244  200   188 S     0.0  0.0   0:05 init
    2 root      15   0     0    0     0 SW    0.0  0.0   0:00 keventd
    3 root      34  19     0    0     0 SWN   0.0  0.0   0:02 ksoftirqd_CPU0
    4 root      34  19     0    0     0 SWN   0.0  0.0   0:00 ksoftirqd_CPU1
    5 root      34  19     0    0     0 SWN   0.0  0.0   0:00 ksoftirqd_CPU2
    6 root      34  19     0    0     0 SWN   0.0  0.0   0:00 ksoftirqd_CPU3
    7 root      15   0     0    0     0 SW    0.0  0.0   0:10 kswapd
    8 root      15   0     0    0     0 SW    0.0  0.0   0:02 bdflush
    9 root      15   0     0    0     0 SW    0.0  0.0   0:00 kupdated
   10 root      25   0     0    0     0 SW    0.0  0.0   0:00 mdrecoveryd
   16 root      25   0     0    0     0 SW    0.0  0.0   0:00 scsi_eh_0
   17 root      25   0     0    0     0 SW    0.0  0.0   0:00 scsi_eh_1
   20 root      15   0     0    0     0 SW    0.0  0.0   0:10 kjournald
   99 root      16   0     0    0     0 SW    0.0  0.0   0:00 khubd
  678 root      15   0   344  288   248 S     0.0  0.0   0:00 syslogd
  683 root      15   0   228  172   172 S     0.0  0.0   0:00 klogd
  703 rpc       15   0   372  340   340 S     0.0  0.0   0:00 portmap
  731 rpcuser   17   0   292  196   196 S     0.0  0.0   0:00 rpc.statd
  828 root      15   0     0    0     0 SW    0.0  0.0   0:01 rpciod
  829 root      16   0     0    0     0 SW    0.0  0.0   0:00 lockd
  919 root      15   0   484  352   336 S     0.0  0.0   0:00 sshd
  952 root      15   0   408  196   196 S     0.0  0.0   0:00 xinetd
1041 root      15   0   316  248   212 S     0.0  0.0   0:00 crond
1097 xfs       15   0  2564  228   228 S     0.0  0.0   0:00 xfs
1133 daemon    15   0   284  196   196 S     0.0  0.0   0:00 atd
1165 root      17   0   424  364   316 S     0.0  0.0   0:00 ypbind
1166 root      15   0   424  364   316 S     0.0  0.0   0:00 ypbind
1167 root      19   0   424  364   316 S     0.0  0.0   0:00 ypbind
发表于 2003-6-18 16:56:22 | 显示全部楼层
kill -9 -1
看看
这样会停止所有的服务和进程


另外是不是你那启动的进程没有正常退出
所以内存没有释放
发表于 2003-6-18 18:04:26 | 显示全部楼层
不是的~Linux运行的时候将硬盘上的一些东西放到内存上,因此内存总是处于被全部占用状态,其实这点大家应该深有体会:我们用cp命令执行非常快,这就是因为Linux把硬盘的东西映射到内存的结果,直接操控内存,总比硬盘快多了~
发表于 2003-6-18 19:39:56 | 显示全部楼层
每次运行一个进程后,会耗掉几百兆内存,运行完后,用TOP查看没有释放内存,继续运行新的进程,内存占用率依次迭加,最后耗光4G后死机


就是保存也不会保存多份
另外楼上说的是以前命令有stick位表示有这个位的程序不会被交换到磁盘现在这个位已没有此功能了

所以还是怀疑进程没有正常退出
或是进程资源没有正确释放(如共享内存等)
发表于 2003-6-18 21:53:27 | 显示全部楼层
你这个 top 的结果看起来听正常阿,四个 CPU 都空闲。内存也还有三个多G没有用到。

即使是内存使用率很高也不是问题,Linux 这样的系统是尽量使用内存的(比如作buffer什么的)。如果你的系统频繁换页,那差不多是物理内存不够了。如果换页不多但是虚存用光了,你要看看是不是有程序分配了内存但是没有释放什么的。。。。。。唉,说来话长了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表