admin管理员组文章数量:1566684
2024年5月23日发(作者:)
如何在系统中查找内存泄漏(memory leak)程序?
为什么系统内存足够的大,但当程序运行了一段时间后,系统还会报内存不够用,无
法产生新进程? 当出现此种情况时,我们通常会还疑有内存泄漏。
首先回答什么是内存泄漏。 内存泄漏是一种程序错误,有内存泄漏的程序会不断向系
统申请内存,然后使用所申请的内存,当不再使用这些内存时也不释放它们,其占用的内
存量越来越大。如果有内存泄漏的程序是一个长时间运行的应用程序,如交互式应用程序,
这就会给系统带来非常严重的问题。 因为长时间的如此运行会导致内存的碎片,会在系统
的实内存和换页空间中积聚大量内容无用的页面。
系统会由于一个程序有内存泄漏问题,最终造成服务器内存的匮乏而宕机或挂起。
在AIX中可以使用svmon , ps 命令来监测进程, 通过检查进程的工作段的变化来确
定是否有内存泄漏现象。如果工作段不断在增加,则就是内存泄漏。
系统核心程序的泄漏是由 mbuf 泄漏、设备驱动程序、核心扩展(kernal extension)
或核心自身引起的。
1. 为了确定是否有内存泄漏,使用svmon 命令中的 i 选项,来监测一个进程或一组
进程,看其工作段空间是否在增加。
下面就是一个有内存泄漏的进程的例子,注意其私有工作段(private working
segment) 的 inuse 不断在增加。
注:svmon 命令中各字段的单位是页面个数,不是KB。
#svmon –P 13548 –i 1 3
-------------------------------------------------------------------------------------
------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd
LPage
13548 pacman 8535 2178
N
Vsid Esid Type Description
Virtual
0 0 work kernel seg
4375
48412 2 work process private
2375
6c01b d work shared library text
1790
4c413 f work shared library data
11
847 8533 N N
LPage Inuse Pin Pgsp
- 4375 2176 847
- 2357 2 0
- 1790 0 0
- 11 0 0
版权声明:本文标题:aix内存泄露 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1716446205a503787.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论