
linux内存溢出怎么解决方案
展开全部
ls:列目录。 用法:ls或ls dirName,参数:-a显示所有文件,-l详悉列出文件。 mkdir:建目录。 用法:mkdir dirName,参数:-p建多级目录,如:mkdir a/b/c/d/e/f -p mount:挂载分区或镜像文件(.iso,.img)文件。 用法: a.磁盘分区:mount deviceName mountPoint -o options,其中deviceName是磁盘分区的设备名,比如/dev/hda1,/dev/cdrom,/dev/fd0,mountPoint是挂载点,它是一个目录,options是参数,如果分区是linux分区,一般不用-o options,如果是windows分区那options可以是iocharset=cp936,这样windows分区里的中文文件名就能显示出来了。用例:比如/dev/hda5是linux分区,我要把它挂到目录a上(如没目录a那就先mkdir a),mount /dev/hda5 a,这样目录a里的东西就是分区hda5里的东西了,比如hda1是windows分区,要把它挂到b上,mount /dev/hda1 b -o iocharset=cp936。 b.镜像文件:mount fileName mountPoint -o loop,fileName是镜像文件名(*.iso,*.img),其它的不用说了,跟上面一样。用例:如我有一个a.iso光盘镜像文件,mount a.iso a -o loop,这样进入目录a你就能浏览a.iso的内容了,*.img文件的用法一样。 find:查找文件。 用法:find inDir -name filename,inDir是你要在哪个目录找,filename是你要找的文件名(可以用通配符),用通配符时filename做好用单引号引起来,否则有时会出错,用例:find . -name test*,在当前目录查找以test开头的文件。 grep:在文件里查找指定的字符串。 用法:grep string filename,在filename(可用通配符)里查找string(最好用双引号引起来)。参数:-r在所有子目录里的filename里找。用例:grep hello *.c -r在当前目录下(包括子目录)的所有.c文件里查找hello。 vi:编辑器。不用说,用linux的话,这个东西一定要会用。 用法:(只能简单说一下),vi filename。filename就是你要编辑的文本文件。用了执行vi filename后,你可能会发现你无法编辑文本内容,不要着急,这是因为vi还没进入编辑状态,按a或i就可以进入编辑状态了,进入编辑状态后你就可以编辑文本了。要退出编辑状态按Esc键就可以了。以下操作均要在非编辑状态下。查找文本:输入/和你要查找的文本并回车。退出: 输入: 和q并回车,如果你修改了文本,那么你要用:q!回车才能退出。保存:输入: w回车,如果是只读文件要用: w!。保存退出:输入: wq回车,如果是只读就: wq!回车。取消: 按u就可以了,按一次就取消一步,可按多次取消多步。复制粘贴一行文本:把光标移到要复制的行上的任何地方,按yy(就是连按两次y),把光标移到要粘贴地方的上一行,按p,刚才那行文本就会被插入到光标所在行的下一行,原来光标所在行后面所有行会自动下移一行。复制粘贴多行文本:跟复制一行差不多,只是yy改成先输入要复制的行数紧接着按yy,后面的操作一样。把光标移到指定行:输入:和行号并回车,比如移到123行:123回车,移到结尾回车。
展开全部
内存溢出是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
当内存严重不足时,内核有两种选择:
1.直接panic
2.杀掉部分进程,释放一些内核。
对于每个进程都有一个oom_score的属性(/proc/PID/oom_score),oom killer会杀死oom_score较大的进程,当oom_score为0时禁止内核杀死该进程。
对过设置/proc/PID/oom_adj可以改变oom_score,oom_adj的范围为【-17,15】,当oom_adj=-17时,oom_score将变为0。
oom_adj的可调值为15到-16,其中15最大-16最小,-17为禁止使用OOM。oom_score为2的n次方计算出来的,其中n就是进程的oom_adj值,所以oom_score的分数越高就越会被内核优先杀掉。
综上,可以通过命令 echo 0 > /proc/PID/oom_adj 来防止进程被oom_killer杀死。
涉及到的参数如下:
(1)、panic_on_oom 当OOM的时候,是否panic 当值为0的时候,在OOM的时候会调用OOM Killer,大部分情况下,会杀掉导致OOM的进程,然后系统恢复 当值为1的时候,发生了OOM以后,如果有mempolicy/cpusets的进程限制,而这些nodes导致了内存问题的时候,OOM Killer会干掉这些中的一个,系统也会恢复 当值为2的时候,OOM后必然panic
(2)、oom_kill_allocating_task 决定在oom的时候,oom killer杀哪些东西。 非0的时候,它会扫描进程队列,然后将可能导致内存溢出的进程杀掉,也就是占用内存最大的那个,但是设置为0的时候,它只杀掉导致oom的那个进程,避免了进程队列的扫描,但是释放的内存大小有限
(3)、oom_dump_tasks 当oom killer被引发的时候,将进程的信息输出,包括pid、uid、tgid、vm、rss、cpu等 默认为0
当内存严重不足时,内核有两种选择:
1.直接panic
2.杀掉部分进程,释放一些内核。
对于每个进程都有一个oom_score的属性(/proc/PID/oom_score),oom killer会杀死oom_score较大的进程,当oom_score为0时禁止内核杀死该进程。
对过设置/proc/PID/oom_adj可以改变oom_score,oom_adj的范围为【-17,15】,当oom_adj=-17时,oom_score将变为0。
oom_adj的可调值为15到-16,其中15最大-16最小,-17为禁止使用OOM。oom_score为2的n次方计算出来的,其中n就是进程的oom_adj值,所以oom_score的分数越高就越会被内核优先杀掉。
综上,可以通过命令 echo 0 > /proc/PID/oom_adj 来防止进程被oom_killer杀死。
涉及到的参数如下:
(1)、panic_on_oom 当OOM的时候,是否panic 当值为0的时候,在OOM的时候会调用OOM Killer,大部分情况下,会杀掉导致OOM的进程,然后系统恢复 当值为1的时候,发生了OOM以后,如果有mempolicy/cpusets的进程限制,而这些nodes导致了内存问题的时候,OOM Killer会干掉这些中的一个,系统也会恢复 当值为2的时候,OOM后必然panic
(2)、oom_kill_allocating_task 决定在oom的时候,oom killer杀哪些东西。 非0的时候,它会扫描进程队列,然后将可能导致内存溢出的进程杀掉,也就是占用内存最大的那个,但是设置为0的时候,它只杀掉导致oom的那个进程,避免了进程队列的扫描,但是释放的内存大小有限
(3)、oom_dump_tasks 当oom killer被引发的时候,将进程的信息输出,包括pid、uid、tgid、vm、rss、cpu等 默认为0
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询