GVKun编程网logo

几种由内存问题导致计算机系统故障的实例(计算机内存故障及其排除方法)

24

针对几种由内存问题导致计算机系统故障的实例和计算机内存故障及其排除方法这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展c–睡眠(x)导致计算机睡眠、ios–使用大型UIImage数组时的内存

针对几种由内存问题导致计算机系统故障的实例计算机内存故障及其排除方法这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展c – 睡眠(x)导致计算机睡眠、ios – 使用大型UIImage数组时的内存问题导致崩溃(swift)、Jennifer Null —— 导致计算机出错的名字、Linux单机系统故障问题汇总等相关知识,希望可以帮助到你。

本文目录一览:

几种由内存问题导致计算机系统故障的实例(计算机内存故障及其排除方法)

几种由内存问题导致计算机系统故障的实例(计算机内存故障及其排除方法)

启动电脑后发现系统无法正常启动、无法进入操作系统或是运行应用软件,无故经常死机等故障时,由于内存担负着数据的临时存取任务,因此这些故障是因为内存出现异常故障而导致的。笔者为大家分析了内存出现故障的原因以及解决方法,希望可以对流您有所帮助。

1、 无法正常开机

遇到这类现象主要有三个解决的途径:第一,更换内存的位置,这是最为简单也是最为常用的一种方法,一般是把低速的老内存插在靠前的位置上。第二,在基本能开机的前提下,进入BIOS设置,将与内存有关的设置项依照低速内存的规格设置。

2、计算机运行不稳定

遇到这类问题的出现主要是内存兼容性造成的,解决的基本思路是与上面大体相同。第一,更换内存的位置。第二,在BIOS中关闭内存由SPD自动配置的选项,改为手动配置。第三,如果主板带有I/O电压调节功能,可将电压适当调高,加强内存的稳定性。

3、电脑升级进行内存扩充,选择了与主板不兼容的内存条。

在升级电脑的内存条之前一定要认真查看主板主使用说明,如果主板不支持512M以上大容量内存,即使升级后也无法正常使用。如果主板支持,但由于主板的兼容性不好而导致的问题,那么可以升级主板的BIOS,看看是否能解决兼容问题。

4、开机后显示如下信息:;ON BOARD PARLTY ERROR”。

出面这类现象可能的原因有三种,第一,CMOS中奇偶较验被设为有效,而内存条上无奇偶较验位。第二,主板上的奇偶较验电路有故障。第三,内存条有损坏,或接触不良。处理方法,首先检查CMOS中的有关项,然后重新插一下内存条试一试,如故障仍不能消失,则是主板上的奇偶较验电路有故障,换主板。

5、Windows系统中运行DOS状态下的应用软件时出现黑屏、花屏、死机现象。

出现这种故障一般情况是由于软件之间分配、占用内存冲突所造成的,一般表现为黑屏、花屏、死机,解决的最好方法是退出windows操作系统,在纯DOS状态下运行这些程序。

6、Windows运行速度明显变慢,系统出现许多有关内存出错的提示。

出现这类故障一般是由于在windows下运行的应用程序非法访问内存、内存中驻留了太多不必要的插件、应用程序、活动窗口打开太多、应用程序相关配置文件不合理等原因均可以使系统的速度变慢,更严重的甚至出现死机。这种故障的解决必须采用清除一些非法插件、内存驻留程序、减少活动窗口和调整配置文件等。

7、内存被病毒程序感染后速度变慢、系统死机等现象。

先采用最新的杀毒软件对系统进行全面的杀毒处理,彻底清理系统中的所以病毒。由于CMOS中已经被病毒感染,因此可以通过对CMOS进行放电处理后恢复其默认值。方法是先将CMOS短接放电,重新启动机器,进入CMOS后仔细检查各项硬件参数,正确设置有关内存的参数值。

c – 睡眠(x)导致计算机睡眠

c – 睡眠(x)导致计算机睡眠

这可能是我到目前为止在C中遇到的最奇怪的事情之一:

while(counter != stop_value)
{
    //Part A starting
    ip.ki.wVk = VK_RETURN;
    ip.ki.dwFlags = 0;
    sendinput(1,&ip,sizeof(INPUT));
    ip.ki.wVk = VK_RETURN;
    ip.ki.dwFlags = KEYEVENTF_KEYUP;
    sendinput(1,sizeof(INPUT));
    //Part A ending

    if (s == 2) counter++;
    else counter--;
    cout << counter; //for debugging
    Sleep(i);
}

每当我评论“A部分” – 离开时,它都能正常工作;程序会休眠i秒,具体取决于用户输入.但是,一旦我添加了再次触发返回键的简单方法,它就会使我的整个计算机都处于睡眠状态(AKA,屏幕在i秒内完全变黑).我试过谷歌搜索,但我找不到任何关于这个.

而且,这只是代码的一小部分.我已经添加了INPUT类和所有内容. s也是一个用户定义的变量,(在这种情况下)可以在2和3之间变化.如果等于2,计数器的值将设置为0,并且它将增加,直到它达到其最大值(这是用户定义,并设置为停止值).使用此方法时,睡眠功能正常工作,只有程序“暂停”i秒.但是,一旦用户将s设置为3,它将从最大值(用户定义)开始减小,直到达到其停止值,该停止值始终等于零.发生这种情况时,屏幕会出现停电.

我已经尝试了多年的调试,我似乎无法找到解决方案…因为代码比这更复杂,我需要使用更多的空间(我不想要to),我会给你一些输入你可以使用的变量:

>工作输入:counter = 0; stop_value = 21; s = 2; i = 1000;
>输入导致屏幕停电:计数器= 20; stop_value = 0; s = 3; i = 1000;

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686298(v=vs.85).aspx

解决方法

也可以坚持下去作为答案:)

你是否将ip的类型设置为INPUT_KEYBOARD?你在使用之前在结构上使用ZeroMemory吗?

ios – 使用大型UIImage数组时的内存问题导致崩溃(swift)

ios – 使用大型UIImage数组时的内存问题导致崩溃(swift)

在我的应用程序中,我有一个图像阵列,可以保存我相机拍摄的所有图像.我正在使用collectionView来显示这些图像.但是,当此图像阵列到达大约20张图像时,它会崩溃.我相信这是由于内存问题..如何以一种内存效率的方式将图像存储在图像阵列中?

Michael Dauterman使用缩略图提供了答案.我希望除此之外还有一个解决方案.也许将图片存储到NSData或CoreData中?

Camera.swift:

//What happens after the picture is chosen
func imagePickerController(picker:UIImagePickerController,didFinishPickingMediawithInfo info: [NSObject:AnyObject]){
    //cast image as a string
    let mediaType = info[UIImagePickerControllerMediaType] as! Nsstring
    self.dismissViewControllerAnimated(true,completion: nil)
    //if the mediaType it actually is an image (jpeg)
    if mediaType.isEqualToString(kUTTypeImage as Nsstring as String){
        let image = info[UIImagePickerControllerOriginalImage] as! UIImage

        //Our outlet for imageview
        appraisalPic.image = image

        //Picture taken,to be added to imageArray
        globalPic = image

        //image:didFinish.. if we arent able to save,pass to contextInfo in Error Handling
        if (newMedia == true){
            UIImageWritetoSavedPhotosAlbum(image,self,"image:didFinishSavingWithError:contextInfo:",nil)

        }
    }
}

NewRecord.swift

var imageArray:[UIImage] = [UIImage]()
viewDidLoad(){

    //OUR IMAGE ARRAY WHICH HOLDS OUR PHOTOS,CRASHES AROUND 20th PHOTO ADDED
    imageArray.append(globalPic)

//Rest of NewRecord.swift is code which adds images from imageArray to be presented on a collection view
}

解决方法

我自己的应用程序中遇到了低内存问题,这些问题必须与许多高分辨率UIImage对象一起使用.

解决方案是在imageArray中保存图像的缩略图(这会占用更少的内存),然后显示这些缩略图.如果用户确实需要查看全分辨率图像,您可以允许他们点击图像,然后重新加载&从相机胶卷显示全尺寸UIImage.

这里有一些代码可以让你创建缩略图:

// image here is your original image
let size = CGSizeApplyAffineTransform(image.size,CGAffineTransformMakeScale(0.5,0.5))
let hasAlpha = false
let scale: CGFloat = 0.0 // Automatically use scale factor of main screen

UIGraphicsBeginImageContextWithOptions(size,!hasAlpha,scale)
image.drawInRect(CGRect(origin: CGPointZero,size: size))

let scaledImage = UIGraphicsGetimageFromCurrentimageContext()
UIGraphicsEndImageContext()
imageArray.append(scaledImage)

和more information about these techniques can be found in this NSHipster article.

斯威夫特4 –

// image here is your original image
let size = image.size.applying(CGAffineTransform(scaleX: 0.5,y: 0.5))
let hasAlpha = false
let scale: CGFloat = 0.0 // Automatically use scale factor of main screen

UIGraphicsBeginImageContextWithOptions(size,scale)
image.draw(in: CGRect(origin: .zero,size: size))

let scaledImage = UIGraphicsGetimageFromCurrentimageContext()
UIGraphicsEndImageContext()

Jennifer Null —— 导致计算机出错的名字

Jennifer Null —— 导致计算机出错的名字

当 Jennifer Null 试图在线购买机票,她在大多数网站上都遇到了出错信息,她被告知在姓一栏没有输入任何字符,要求她重试一次。对程序员来说,原因十分简单:Null这个单 词会导致数据库出错,原因是Null经常被写入到数据库字段内表示没有数据。以Null为姓名的人非常罕见,而解决这个问题并不那么容易。Null遇到的 麻烦不仅仅限于购买飞机票,还有在政府网站上填报纳税信息。Null这个单词也不是唯一一个导致计算机在处理时出错的例子。夏威夷女子Janice Keihanaikukauakahihulihe''ekahaunaele 的名字长度超过了州ID卡36字符长度的限制。

Linux单机系统故障问题汇总

Linux单机系统故障问题汇总

一、 处理linux系统故障的思路

作为一名优秀的linux工程师,一定要有一套清晰、明确的解决故障思路,当问题出现时,才能迅速定位、解决问题,这里总结出了一套处理问题的一般思路,供大家参考:
1、重视报错提示信息:每个错误的出现,都是给出错误提示信息,一般情况下这个提示基本定位了问题的所在,因此一定要重视这个报错信息,如果对这些错误信息视而不见,问题永远得不到解决。
2、查阅日志文件:有时候报错信息只是给出了问题的表面现象,要想更深入的了解问题,必须查看相应的日志文件,而日志文件又分为系统日志文件(/var/log)和应用的日志文件,结合这两个日志文件,一般就能定位问题所在。
3、分析、定位问题:这个过程是比较复杂的,根据报错信息,结合日志文件,同时还要考虑其它相关情况,最终找到引起问题的原因。
4、解决问题:找到了问题出现的原因,解决问题就是很简单的事情了。



从这个流程可以看出,解决问题的过程就是分析、查找问题的过程,一旦确定问题产生的原因,故障也就随之解决了。看似简单明了的思路,但是真正能重视这个思路的、按照这个思路处理问题的却很少,衷心的希望大家在处理故障的时候,能静下心来,先整理思路,然后有目的的去处理问题。

二、 linux系统无法启动的解决办法

导致linux无法启动的原因有很多,常见的原因有如下几种:
1、文件系统配置不当,比如/etc/inittab文件、/etc/fstab文件等配置错误或丢失,导致系统错误,无法启动。
2、非法关机,导致root文件系统破坏,也就是linux根分区破坏,系统无法正常启动
3、Linux内核崩溃,从而无法启动
4、系统引导程序出现问题,比如grub丢失或者损坏,导致系统无法引导启动。
5、硬件故障,比如主板、电源、硬盘等出现问题,导致linux无法启动。
从这些常见的故障可知,导致系统无法启动的主要有两个问题,硬件原因和操作系统原因,对于硬件出现的问题,只需通过更换硬件设备,即可解决,而对于操作系统出现的问题,虽然出现的问题可能千差万别,不过在多数情况下都可以用相对简单统一的一些方法来恢复系统,下面我们就针对上面提出的几个问题,结合RHEL/Centos Linux系统环境,给出一些常用的、普遍的解决问题的方法。





2.1、/etc/fstab文件丢失,导致系统无法启动
/etc/fstab文件存放了系统中文件系统的相关信息,如果正确的配置了该文件,那么在linux启动时,系统会读取此文件,自动挂载linux的各个分区,如果此文件配置错误,或者丢失,就会导致系统无法启动,具体的故障现象是在检测mount partition时出现:
starting system logger
此后系统启动就停止了。针对这个问题,我们的第一思路就是想办法恢复/etc/fstab这个文件的信息,只要恢复了此文件,系统就能自动挂载每个分区,正常启动。可能很多读者首先想到的是将系统切换到单用户模式下,然后手动挂载分区,最后结合系统信息,重建/etc/fstab文件。
但是这种方法是行不通的,因为fatab文件丢失导致linux无法挂载任何一个分区,即使linux还能切换到单用户下,那么此时的系统也只是一个read-only的文件系统,无法向磁盘写入任何信息。
我们介绍另外一个方法,就是利用linux rescue修复模式登录系统,进而获取分区和挂载点信息,重构/etc/fstab文件。
这里以Centos6.9为例,其它版本方法类似,首先将系统光盘放入光驱,设置BOIS从光驱启动,这样系统就从光驱引导,如下图所示,选择“Rescue installed system”一项,然后回车,系统开始引导进入rescue模式。
Linux单机系统故障问题汇总
接着系统自动开始引导,进入下图所示画面:
Linux单机系统故障问题汇总
这里是选择模式使用的语言,可以按照自己需要设定,我们这里选择“English“,然后按tab键,选中“ok”,回车进入下一步。
下面进入的是键盘选择界面,如下图所示,这里选择默认的“us”即可。
下面进入网络配置界面,如下图所示:
Linux单机系统故障问题汇总
这里是选择是否启用网络,由于系统已经无法启动,我们已经在linux系统上进行操作了,启用网络与否都无所谓。这里选择不启用。
下面到了最关键的步骤了,如下图所示,修复模式会自动将系统的所有分区挂载到/mnt/sysimage目录下,选择“Continue”,则修复环境进入到read-write状态下,可以对分区进行读写操作,选择“Read-Only”,修复环境进入到只读模式,由于我们要重建fstab文件到/etc目录下,因此选择“Continue”进入可读写模式下。
Linux单机系统故障问题汇总
下面是一个友情提示界面,如下图所示,由于fstab文件丢失,修复模式找不到任何可挂载的分区,从这里可知,修复模式在这里也读取/etc/fstab文件,回车,进入下一步。
Linux单机系统故障问题汇总
下面是选择下一步要执行的动作,如下图所示,这里选择“shell Start shell”进入修复模式命令行。
Linux单机系统故障问题汇总
最后,就进入了修复环境下,可以进行操作了。如下图所示
Linux单机系统故障问题汇总
上面详细演示了如何进入linux的修复模式,其实很多情况下,linux无法启动时,都可以通过这个方式登录系统进行修复和更改操作。
下面是恢复/etc/fstab文件的详细过程,首先查看一下系统分区情况,如下所示:
bash-4.1# fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1

1 25 200781 83 Linux
/dev/sda2 26 1300 10241437+ 83 Linux
/dev/sda3 1301 1682 3068415 83 Linux
/dev/sda4 1683 5221 28427017+ 5 Extended
/dev/sda5 1683 1873 1534176 83 Linux
/dev/sda6 1874 2064 1534176 83 Linux
/dev/sda7 2065 2255 1534176 83 Linux
/dev/sda8 2256 2382 1020096 83 Linux
/dev/sda9 2383 2484 819283+ 82 Linux swap / Solaris
/dev/sda10 2485 5221 21984921 83 Linux
因为分区并没有损坏,通过fdisk命令可以查看到系统分区的完整信息,但是每个分区对应的label name信息我们还不知道,下面通过tune2fs命令查看每个分区对应的label name:
bash-4.1# tune2fs -l /dev/sda1 |grep mounted
Last mounted on: /boot
bash-4.1# tune2fs -l /dev/sda2 |grep mounted
Last mounted on: /usr
bash-4.1# tune2fs -l /dev/sda3 |grep mounted
Last mounted on: /
bash-4.1# tune2fs -l /dev/sda5 |grep mounted
Last mounted on: /var
bash-4.1# tune2fs -l /dev/sda6 |grep mounted
Last mounted on: /tmp
bash-4.1# tune2fs -l /dev/sda7 |grep mounted
Last mounted on: /home
bash-4.1# tune2fs -l /dev/sda8 |grep mounted
Last mounted on: /opt
bash-4.1# tune2fs -l /dev/sda10 |grep mounted
Last mounted on: /data
这样,就得到了所有分区的挂载点信息,接下来就可以构造一个fstab文件了。
小技巧:可以参考其它系统中fstab文件的格式,结合本系统的分区和挂载点信息,构造出自己的fstab文件来。
由于fstab文件是存放在系统根目录下的,因此需要挂载原来系统的根分区,从上面可知根分区对应的设备名为/dev/sda3,接着在修复模式创建的临时根分区下创建一个挂载点,然后挂载原来系统的根分区。操作过程如下所示:
bash-4.1# pwd
/
bash-4.1# mkdir temp
bash-4.1# mount /dev/sda3 /temp
bash-4.1# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev 515644 0 515644 0% /dev
/tmp/loop0 79872 79872 0 100% /mnt/runtime
/dev/sda3 2972268 259916 2558932 10% /temp
这样以来,原有根分区的文件全部挂载到了/temp目录下,接着就可以创建我们需要的fstab文件了。
重构好的fstab文件内容如下:
bash-4.1# cat /temp/etc/fstab
LABEL=/ / ext4 defaults 1 1
LABEL=/boot /boot ext4 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
LABEL=/home /home ext4 defaults 1 2
LABEL=/opt /opt ext4 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=/data /data ext4 defaults 1 2
LABEL=/usr /usr ext4 defaults 1 2
LABEL=/var /var ext4 defaults 1 2
LABEL=SWAP-sda9 swap swap defaults 0 0
配置完毕,保存退出,然后重启系统,看系统是否能正常启动。

















































































2.2、CentOS下误删除/boot目录修复方法
这个问题经常发生在新手、研发身上,误删除的原因很多,但是并不重要,作为专业背锅侠,要的就是误删除后怎么回复,一起来看下这个现象吧,看下图:
Linux单机系统故障问题汇总
出现这个情况,可能的原因有:系统引导出现问题、/boot目录误删除、grub配置错误。
不管是什么原因,这里给个终极方法,也就是一定能解决问题的方法,保证大家屡试不爽。
要解决这个问题,还是要用到一个centos的U盘镜像或者光盘镜像,通过系统镜像进入rescue修复模式,然后就可以大展拳脚了。
下面看看如何在centos7.x版本下,进入rescue修复模式,然后修复系统引导。
首先通过系统镜像盘进入系统引导模式,如下图所示:
Linux单机系统故障问题汇总
然后选择Troubleshooting,回车进入下图界面:
Linux单机系统故障问题汇总
这里选择Rescue a Centos system回车,进入如下界面:
Linux单机系统故障问题汇总
这是进入rescue修复模式的几个选项,跟centos6.x版本类似,这里选择数字1,进入可读、写模式。
等待片刻,即可进入下图所示界面:
Linux单机系统故障问题汇总
敲回车,进入命令行模式,然后执行chroot命令,如下图所示:
Linux单机系统故障问题汇总
这样,就进入了root目录下,相当于进入到了真实系统环境下了。
接着,将系统镜像挂载到任意一个目录下,这里挂载到/mnt下,挂载系统镜像的目的是将系统镜像作为yum源,然后安装系统丢失的内核模块,并安装grub2引导程序。
bash-4.2# mount /dev/cdrom /mnt
下面开始创建一个yum源仓库,用于从本地系统镜像中读取rpm包,进行内核模块的安装。如下图所示:
Linux单机系统故障问题汇总
重点来了,第一步是重新安装内核,这里使用yum 的reinstall命令,千万别用install来安装,执行如下命令:
bash-4.2# yum reinstall kernel
这样,内核模块安装完成了,接下来,还需要重新安装grub2,并重新生成 grub2 配置文件 grub.cfg,执行如下图所示操作:
Linux单机系统故障问题汇总
执行完成后,两次执行exit命令退出后,系统会自动重启,完成boot引导的修复,不出意外的话,系统已经可以畅通无阻的启动了。


























三、 Linux系统无响应(死机)问题分析

Linux服务器在长期运行后,难免出现无响应现象,俗称“死机”。在系统死机后,屏幕一般会输出故障信息,键盘失去响应,这种情况的常见处理办法就是重启系统,不过在重启前,要重点关注下屏幕的输出信息,因为其提示的可能是引起死机的主要原因,对解决问题是有很大帮助的。
其实还有另一个方法,就是通过串口直连线连接客户机和服务器,将服务器的出错详细信息发送到客户机上。
引起服务器死机的原因有很多,但主要有两个方面:软件问题和硬件问题。下面总结了造成Linux系统死机的常见原因和解决问题的思路:
1)系统硬件问题,主要是有SCSI卡、主板、RAID卡、HBA卡、网卡、硬盘等硬件设备导致的。在这种情况下需要定位硬件故障细节,通过更换硬件来解决问题。
2)外围硬件问题,主要是网络问题导致的。此时就需要检查网络设备、网络参数等方面查找和解决问题。
3)软件问题,主要是系统内核bug、应用软件bug、驱动程序bug等。在这种情况下就需要从升级内核、修复程序bug、更新驱动程序等方面来解决问题。
4)系统设置问题:主要是系统参数设置不当导致,可以通过恢复系统到默认状态,关闭防火墙等方面来解决问题。





关于几种由内存问题导致计算机系统故障的实例计算机内存故障及其排除方法的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于c – 睡眠(x)导致计算机睡眠、ios – 使用大型UIImage数组时的内存问题导致崩溃(swift)、Jennifer Null —— 导致计算机出错的名字、Linux单机系统故障问题汇总的相关知识,请在本站寻找。

本文标签: