NOVOTS KMS 词汇表 Glossary    联系我们 Contact Us
查询 Search  
   
按类别浏览 Browse by Category
NOVOTS KMS .: 硬件 .: 剖析常见内存“读写错误”故障及其解决方法

剖析常见内存“读写错误”故障及其解决方法

剖析常见内存“读写错误”故障及其解决方法
近来,在论坛中,有朋友遇到了应用程序进行内存读写时发生错误的问题,恰好笔者也在使用Maxthon中遇到了此问题。
  这些问题多见于关闭应用程序的时候,经过一番的请教“高人”和网上搜索,对此问题有了进一步的了解,希望能与大家分享:
一、简单了解“诱发”成因:
  “知己知彼,百战不殆”。在解决问题之前,首先来分析一下此问题的“源头”:
正常地,操作系统为了保证“自己”运行的安全性与稳定性,会首先从内存中划分出一部分空间供自己调用,并禁止其它应用程序访问。当应用程序运行时,会首先向系统发出内存读写的请求,系统会从内存空间中划出一部分供应用程序调用,并同时“告诉”应用程序该内存区地址;当应用程序结束时,系统会立刻收回分配的内存地址(即内存空间),供以后的程序调用。在此过程中,如果应用程序与系统之间的“沟通”出现了问题,比如:系统分配失败而应用程序未能检测到、应用程序访问了所分配地址以外的空间(即内存溢出)或试图读写受系统保护的地址等等情况,都将被系统的保护机制捕获,在win98/me的操作系统中会出现死机或蓝屏,在win2000/xp等的NT内核操作系统中出现开头所见的“读写错误”。
提示:长时间使用计算机后,系统反应速度明显减慢且可用资源严重不足,很大程度上就是因为系统没有及时释放被已关闭程序使用过的内存与资源,此时用重新启动计算机的方法来解决是最彻底、最有效的。
二、危害:
经笔者多次试验,此故障多见于win2000/xp中,并不会带来什么危害,只不过需要多次点击鼠标关闭对话框而已。如果在玩游戏的时候出现,则会造成无法进行游戏,但对系统无影响。
三、寻找故障的根源:
硬件故障
对于第一次遇到此问题的用户,肯定一下子就怀疑到了内存条。恰恰相反,通常此问题倒是由软件系统引起。不过对于那些超频、内存条混插的用户就要注意了,应该通过软件手段进行排除或确认内存条的品质,比如:安装win2000/XP的过程中是否有报错或使用MemTest软件进行检测(下载地址:http://www.onlinedown.net/soft/20751.htm)。实际中,如果真的由物理内存引起,还应该伴随其它的故障,比如:无故重启、死机、系统崩溃等现象。如果仅仅表现为单纯的内存读写报错,可以排除物理内存的故障。
  病毒引起
病毒的一大特点就是不断的自我复制、传播,占据大量的内存空间,直至将系统“拖死”;还有些病毒常驻内存中,不断的感染其它的程序,当应用程序访问的内存地址空间被病毒所占领,同样也会出现内存读写报错。此时需要使用“任务管理器”来查看当前的系统进程中是否有可疑进程,最好到安全模式中使用更新了病毒库的杀毒软件进行查杀。

应用程序与系统存在冲突
这种情况是最常见的,大多数人遇到的也是这种情况。根据实际问题,解决途径有三:
  1.更改应用程序版本
  注意:这里之所以没有使用“更新”来描述,就是因为一些最新版的程序恰恰有可能出现冲突问题,最新的并不一定是最好的!当遇到这种问题时,可以到网上看看该软件是否有了新版本,如果有了更新就升级试试,当同样有问题时就要考虑寻找能满足需要的旧版本。一般旧版本也是经过“多年”锤炼的,稳定性一般不会有问题。
实例:我使用的winxp+SP2的操作系统,使用maxthon1.x的多个版本均在关闭程序的时候出现此问题,只好使用老版本的MyIE2,直到最近的Maxthon1.1.067版本才稳定下来。
  2.更新系统的补丁程序
当无适合的应用程序版本时,也要考虑系统的问题,特别是系统的SPx类补丁。它们都集成了微软发布的所有补丁程序,对于一些安全性和兼容性问题都有了很大的改进,安装它们仅次于重装系统的效果。可以通过安装SP补丁来尝试解决。
实例:一台使用win2000+sp3操作系统的机器,尝试使用Maxthon的所有版本(包括MyIE2),当关闭时都会出现此故障,后来升级到SP4后使用一切正常。
  3.使用虚拟机
  当然,这里说的虚拟机可不是VMware和Virtual PC软件,而是XP系统中自带的模拟操作系统程序。这样做,就是因为一些应用程序与NT内核操作系统的内存管理机制存在兼容性问题,此时可以使用win98/me系统来模拟运行。是已经没有可选应用程序或系统更新补丁用户的最后一根“稻草”。
使用方法:在应用程序的桌面快捷方式上单击右键,进入“属性”中的“兼容性”标签,在“兼容模式”中勾选“用兼容模式运行这个程序”。然后在下拉选框中选择“windows 98/windows me”,确定后生效。现在双击此快捷方式,就会在模拟的win98/me状态下运行。
虚拟内存碎片太多了
众所周知,操作系统运行时会从硬盘上划出一部分空间作为虚拟的内存进行文件交换,自动将暂时使用不到的文件存到虚拟内存上,当使用时再到虚拟内存中调用。断电或重启后,物理内存中保存的数据将全部丢失,而保存在虚拟内存中的数据却不会丢失(特别是当非法关机后)。久而久之,虚拟内存中会产生很多的碎片。虽然同为硬盘碎片,但系统自带的碎片整理程序不会整理虚拟内存所占据的位置(整理碎片时,没发现标记为绿色的“无法移动的文件”?)。当碎片太多时,系统会耗费很多的资源在其中寻找所用到数据,轻则影响系统运行效率,重则也会出现“内存读写”问题。解决此问题,可以选用第三方的磁盘碎片整理程序进行整理;如果是双系统,可以进入另一个系统删除该虚拟内存文件;如果是单系统,也可以使用组策略来实现每次关机时进行自动清除,下次开机时系统会重新建立此文件。
使用方法:在“开始/运行”中输入“gpedit.msc”进入组策略设置,定位于计算机配置-windows 配置-安全设置-本地策略-安全选项,双击右侧窗口的“关机:清理虚拟内存页面文件”项,在弹出窗口中选中“启用”即可。
提示:这种方法适用于那些只有长时间运行程序后才出现问题的情况。
经典故障:
  实例1:当使用real gold后关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 。要终止程序,请单击“确定”。
  答:这个故障很常见,是由于微软拼音输入法2003引起。当该输入法的语言栏设置为隐藏时,关闭real gold就会出现此问题。解决方法就是不要设置语言栏为隐藏或切换到其它的输入法,比如五笔。
  实例2:当接收到QQ好友传过来的一条信息后出现:“0x772b548f”指令引用的“0x00303033”内存,该内存不能为“written”,要终止程序,请单击“确定”故障,并且QQ自动下线。
  答:这是利用QQ的BUG搞的”恶作剧“,发送了特殊的代码,会造成老版本QQ掉线,在网吧常见。其实只要升级到最新版本就可以了。
  实例3:进行网页浏览时出现:“0xXXXXXXXX”指令引用的“0x00000000”内存。该内存不能为“read”。要终止程序,请单击“确定”。
  答:请升级IE到IE6.0SP1,同时还要给系统打上补丁。

这篇文章对你多有用?

相关文章

article cross CE
用户不用VPN,直接选择internet就可以使用邮箱,但...

(No rating)  9-6-2011    Views: 697   
article 对呼叫中心运营KPI指标的简单剖析
事实上,作为一名呼叫中心的运营管理者,对于运营K...

(No rating)  10-28-2010    Views: 1330   
article 剖析:实施ERP项目过程的幸福度曲线
ERP在某种程度上是一个大型的运算器,只有所有的数...

(No rating)  10-8-2011    Views: 886   

用户评语

添加评语
当前还没有评语.


.: .: .: .: .:
[ 登陆 ]
北京护航科技有限公司 2006

Novots Technologies Limited