LinuxSir.cn,穿越时空的Linuxsir!

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

请教系统管理高手,内存泄漏问题的解决办法。

[复制链接]
发表于 2004-12-30 15:26:51 | 显示全部楼层 |阅读模式
-----------------------------------------------------------相关资料----------------------------------------------------------------------------------------

内存泄漏指的是程序员动态分配了内存,但是在使用完成后却忘了将其释放。除了内存泄漏以外,在开发人员自己管理内存的开发中,缓冲溢出、悬摆指针等其它一些内存的问题也时有发生。

如果出现这样的问题,后果将非常严重。因为有问题的程序会不断地向系统申请内存,并且不释放内存,最终可能导致系统内存耗尽而导致系统崩溃。此外,存在内存泄漏问题的程序除了会占用更多的内存外,还会使程序的性能急剧下降。对于服务器而言,如果出现这种情况,即使系统不崩溃,也会严重影响使用。
-----------------------------------------------------------相关资料----------------------------------------------------------------------------------------



很不幸,我们请别家公司写了一个程序就有这样的问题。不断的申请服务器的内存,而不释放内存。现在我们公司的服务器内存都是6G的,只能够维持一天,第二天就必须重新启动服务器。

就因为不能释放内存,每台服务器的成本高了2W左右。想解决这个问题,但是写这个程序的公司现阶段拿不出解决办法来。

既然不能从程序本身着手,我就想是不是可以从系统面着手呢。服务器用的是X86体系结构,操作系统是 redhat 7.3  在网上找了一下 linux下似乎没什么释放内存的程序(windows下就很多)。

是不是可以自己写个脚本,用crond每过一阶段就释放不在使用,但是被程序占用的内存呢?怎么样
区分一段内存是可以被释放的呢?


各位达人有这方面的资料可以提供吗?或者linux下有没有可以释放内存的程序呢?

请各位达人不吝赐教,小弟万分感激!!拜上!!
尼普拉斯沃尔特 该用户已被删除
发表于 2004-12-30 20:07:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2004-12-31 00:23:56 | 显示全部楼层
这种内存泄漏的程序就是神仙下凡也没办法,更何况什么“释放内存的程序“。
估计让你们公司重写程序也不太现实了,
我觉得可行的方法是
到想sourceforge.net这样的网站找找看有没有现成的程序可用。
 楼主| 发表于 2004-12-31 09:32:17 | 显示全部楼层
linux下 有什么软件可以释放内存空间的呢

找了很多地方 都找不到
发表于 2004-12-31 12:10:14 | 显示全部楼层
linux不是依靠内核管理内存吗?在内核里找找有没有相应的选择项,重新编译一下内核
发表于 2005-1-1 01:10:09 | 显示全部楼层
恕我孤陋寡闻,据说linux是无法单独管理某个线程的内存的。因为假如这个程序是由init直接调用的,抑或是x来调用的,只能由它的父线程来收回内存。要不然就只能是发送kill信号。
发表于 2005-1-1 06:32:25 | 显示全部楼层
占用的内存怎么能随便释放呢,你又不知道哪片内存正在使用
如果那片内存正在使用,而被你释放了,这个简直就是灾难性的后果,
跟乱用指针没有什么分别
另外你说的windows下面有释放的工具,不知道你说的是哪些,我问问,
如果是优化大师这些什么的,这个好象只是整理碎片,而不是释放内存,
释放内存的话,要没有指针指向那块内存才可以释放,不过代码有问题,只申请不释放的话,
这么说那块内存应该是一直被标记的,就没有办法释放了
这个我觉得应该找那个人修改代码,他的代码写的有问题,

实在不行,看这样可行不,就是弄一个集群好了,到一定的时候就重新起动一台机器,轮流服务
不过代码的问题最后还是要解决的,这个写代码的太不负责任了,
发表于 2005-1-1 06:39:54 | 显示全部楼层
Post by fundawang
恕我孤陋寡闻,据说linux是无法单独管理某个线程的内存的。因为假如这个程序是由init直接调用的,抑或是x来调用的,只能由它的父线程来收回内存。要不然就只能是发送kill信号。

如果kill掉的话,估计跟重新起动没有多大的差别了
:)
飘舞的红枫叶 该用户已被删除
发表于 2005-1-2 23:32:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2005-1-3 16:06:50 | 显示全部楼层
6G内存,一天就重起,程序写成这样,没药可救了。换个委托公司吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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