12.4.1 内存泄漏
内存泄漏是Linux系统的应用程序中一个较常见的影响系统性能的问题,这往往是因为应用程序的开发人员疏忽所导致的。一般情况下,应用程序从堆中分配内存,使用完后应该调用free或delete释放该内存块。如果开发人员没有在代码中进行该步操作,那么这块内存就不能被再次使用,也就是说这块内存泄漏了。如果这种问题持续出现,那么被泄漏的内存就会越来越多,最终导致系统所有内存都被耗尽,这将会导致严重的后果,系统将无法正常运行。为此,用户可以使用ps和kill命令查看进程的内存使用情况和进行回收,假设系统中的进程情况如下所示。
# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 5754 0.0 5.0 217548 25548 ? Sl 13:01 0:03 java -Djava.util.logging.manager //Java进程占用系统内存的5%
sam 6729 0.0 4.6 105312 23660 ? S 13:48 0:02 gedit file:///media//command.
txt
sam 6378 0.0 4.2 40532 21572 ? S 13:02 0:00 /usr/bin/python /usr/bin/sealert
sam 6327 0.0 4.0 132472 20652 ? Ss 13:02 0:02 nautilus --no-default
sam 6351 0.0 3.9 37664 20152 ? Ss 13:02 0:00 /usr/bin/python-tt/usr/bin/puplet
sam 6448 0.9 3.6 95524 18548 ? S 13:06 1:50 gnome-system-monitor
sam 6469 0.0 3.5 127196 17836 ? Sl 13:18 0:04 gnome-terminal
sam 6325 0.0 3.4 95848 17436 ? Ss 13:02 0:01 gnome-panel --sm-client-id
root 6156 0.9 2.7 22532 13840 tty7 Ss+ 13:01 1:48 /usr/bin/Xorg :0 -br -audit
如果要回收java -Djava.util.logging.manager进程的内存的话,使用命令:
kill -9 5754
进程将会被终止,同时它所占用的内存也会被系统所回收。