我把JVM的类加载器整理了一下
2020-07-23 07:26:49学习JVM这个新的技术,我也分为了3个板块来学习:JVM类加载器,JVM内存结构,JVM垃圾回收这三个板块来学习,今天这篇文章讲的是JVM类加载器。
之前去面试的时候面试官问了我关于关于JVM性能调优的问题,由于自己之前公司的项目里自己没有接触到JVM性能调优的相关问题(感觉这些都是公司架构师考虑的问题),所有面试官问的时候自己一脸懵逼,所有最后的结果当然是凉凉。。,于是,为了查漏补缺,就去学习了一下JVM的相关知识,希望能帮助到大家。
在学习任何一项新的知识之前,我都会先列出一份学习大纲,然后按照这个学习大纲一步一步的来学习了解,所以学习JVM这个新的技术,我也分为了3个板块来学习:JVM类加载器,JVM内存结构,JVM垃圾回收这三个板块来学习,今天这篇文章讲的是JVM类加载器。
1. 什么是JVM

既然是学习关于JVM的相关理论知识,我们当然得知道什么是JVM。JVM是Java Virtual Machine(Java虚拟机)的缩写。既然说到虚拟机,可能又会有人问什么是虚拟机了,我这里把虚拟机得相关概念放在这里:
程序虚拟机:比如Java虚拟机,它专门为执行单个计算机程序而设计。在Java虚拟机中执行的 指令我们称为Java字节码指令。(JVM是运行在操作系统之上的,它与硬件没有直接的交互)
所以根据定义,我们可以得知JVM是程序虚拟机。那么JVM在哪里呢,其实,我们在最开始学习Java得时候,都必须按照Java得运行环境,从网上下载JDK安装包,安装完成之后,在安装路径下会有两个文件夹,一个叫Jdk,一个叫jre,而java虚拟机就在jre的文件夹里面。
存在即有他存在的道理,那么JVM的存在有什么用呢?他是用来干嘛的呢?学过JAVA的都知道,java程序要想运行,Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行。而解释得这个过程就是通过Java虚拟机来执行的(可以参考下面这张图理解)。java虚拟机是来解释字节码文件的,而解释得这个过程其实是一个很复杂得过程,所以这就到了我们今天要讲得主题了。
2. 类加载(classLoading)
我们先来了解一下类加载得整个过程。从下图可以看到类的生命周期一共分为5个阶段,加载、连接(包括验证、准备和解析)、初始化、使用(类得实例化)、卸载(垃圾回收)。
在Java代码中,我们都知道类(指的是类本身Class,比如,Interface,Enum)的加载、连接、初始化过程都是在程序运行期间完成的。下面我们就先讲一下类得加载、连接和初始化。
类的加载:*最常见的一种情况*是将已存在的类的Class文件(也就是字节码文件)从磁盘上面加载到内存里面,将其放在运行时数据区的方法区中,然后在内存中创建一个java.lang.Class对象用来封装类在方法区中的数据结构
类的连接(又细分了三个阶段):
类的初始化:为类的静态变量进行赋值(从代码从上到下执行)
Java程序对类的使用方式可分为两种:
所有的Java虚拟机实现,在每个类或接口被Java程序”首次主动使用”时才初始化他们,一定要记住,是首次并且还是主动使用得时候才会初始化类。
如果对其类或者接口主动使用导致初始化了(此时的初始化就说明加载、连接(连接的三个步骤,注意,此时的连接只完成类的静态变量分配内存,并将其初始化为默认值)已经完成了)
我这里总结了7种主动使用:
除了以上7种情况,其他使用Java类的方式都被看做是对类的被动使用,都不会导致类的初始化。
3. 类的加载连接初始化详细讲解
其实我们知道类的加载的最终产品是位于内存中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。
根据以上的总结,我们知道类的连接其实就是当类被加载后,就进入连接阶段。连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行环境中去。那么类的验证的内容有哪些呢?
4. 类加载器
类的加载其实是类加载器去完成的,我们可以把类加载器想象成一个小人,帮助JVM干活的。那么类加载器的定义是什么呢,这里按照我个人的理解总结了一下:
类加载器(classLoader):类加载器是用来把类加载到Java虚拟机的内存空间中(加载类的工具,类一定是由类加载器去加载)。从JDK1.2版本开始,类的加载过程采用双亲委托机制。这种机制能更好的保证Java平台的安全。在此委托机制中,除了Java虚拟机自带的根类加载器之外(因为根类加载器本身是没有父加载器的),其余的类加载器都有且只有一个父加载器。当Java程序请求加载器loader1加载Sample类时,loader1首先委托自己的父加载器去加载Sample类,若父加载器能加载,则由父加载器完成加载任务,否则才有加载器loader1本身加载Sample类。
类加载器分为两种类型:
(1) Java虚拟机自带的加载器
(2) 用户自定义的类加载器
类加载器并不需要等到某个类被”首次主动使用“时再加载它
5. 类加载器双亲委托机制详解
这一小节我们来详细了解一下类加载器的双亲委托机制。父亲委托机制也称为双亲委托机制(我个人得理解实际上应该叫做父亲委托机制,因为在源码里面是parent而不是parents):在父亲委托机制中,各个加载器按照父子关系形成了熟悉结构(逻辑上的,比如下图),除了启动类加载器之外,其余的类加载器都有且只有一个父加载器。
以下几种加载器从表面看是继承关系,实际上是包含关系哦
我举例来看看父亲委托机制的实际执行:
对上图执行流程我详细得解释一下类加载器父亲委托机制具体是怎么执行得:首先loader1和loader2是我们自定义的加载器,loader1尝试去加载Sample类,根据父亲委托机制,其实并不是由loader1去直接加载Sample类到虚拟机当中,相反,它是把这个加载任务转交给系统类加载器去完成,系统类加载器再把这个加载任务转交给扩展类加载器,然后扩展类加载器再转交给根类加载器去完成,由于根类加载器已经是类加载器体系层次的最顶层,所以根类加载器会尝试去Sample类到虚拟机当中(然后根类加载器不能加载,因为他是从特定的几个目录去加载),既然根类加载器无法完成加载,他就会把这个任务返回给扩展类加载器(同理,原则上也不能加载),再让系统类加载器去加载(一般是可以加载成功)。最终再把这个流程返回给loader1,就宣告类加载过程结束。
6. 获取类加载器的几种途径
既然我们了解了类加载器的种类,那我们也需要了解通过什么方式可以获取到类加载器,获取类加载器的方式我这里总结了4种方式:
第一种:获得当前类的ClassLoader:
具体实现如下所示:
第二种:获得当前线程上下文的ClassLoader:
具体实现如下所示:
第三种:获得系统ClassLoader:
第四种:获得调用者的ClassLoader
我们还需要知道其实数组并不是由类加载器加载创建的的,而是当被需要时,被jvm运行时自动创建的,对于数组来说,他的类加载器是和他元素的类型的类加载一样的,如果元素类型是基本类型,则数组没有类加载器
ClassLoader类本身默认是并行加载的的(parallel capable),如果子类想支持并行加载,是需要自己注册的,用户自定义加载器若需要并行加载,需要自行配置,通过调用registerAsParallelCapable()
7. 总结
通过以上得相关总结,我们其实可以发现,JVM学习并不是像spring,springcloud都是应用框架,是可以马上做东西的,立竿见影,可以马上看到效果,JVM不是这样的,涉及到了很多理论。很多同学可能觉得不重要,感觉学了也没有,其实不然,就像练武一样,只有你的内功修炼好了,再去练其他的招式就会很容易,才会精益求精,而JVM就相当于内功,所以可想而知,对于JVM的学习,显然是很重要的。
如何熟练java语言?
编程的时候多多的查询JDK文档,看两本好书,例如张孝祥的<>和<>,<>这本书刚看得时候很烦,容易打消积极性,看的时候以一种查字典的态度看,JDK文档也是如此 Java 作为一门编程语言,最好的学习方法就是写代码。 当你学习一个类以后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然后再多调用几个类的方法,看看运行结果,这样非常直观的把类给学会了,而且记忆非常深刻。 然后不应该满足把代码调通,你应该想想看如果我不这样写,换个方式,再试试行不行。 记得哪个高人说过学习编程就是个破坏的过程,把书上的例子,自己学习Documentation编写的例子在运行通过以后,不断的尝试着用不同的方法实现,不断的尝试破坏代码的结构,看看它会有什么结果。 通过这样的方式,你会很彻底的很精通的掌握Java。 举个例子,我们都编过Hello World public class HelloWorld { public static void main(String[] args) { (Hello World); } } 很多初学者不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写?包括我刚学习Java的时候也有这样的疑问。 想知道答案吗?很简单,你把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个 String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。 我当初学习Java的时候就是这样做的,把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。 此外,我对于staic,public,private,Exception,try{ }catch {}finally{}等等等等一开始都不是很懂,都是把参考书上面的例子运行成功,然后就开始破坏它,不断的根据自己心里面的疑问来重新改写程序,看看能不能运行,运行出来是个什么样子,是否可以得到预期的结果。 这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。 我就对这个相关的知识彻底学通了。 有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。 这样对于编程的掌握是及其深刻的。 其中特别值得一提的是JDK有一个非常棒的调试功能,-verbose java ?Cverbose javac ?Cverbose 以及其它很多JDK工具都有这个选项 -verbose 可以显示在命令执行的过程中,JVM都依次加载哪里Class,通过这些宝贵的调试信息,可以帮助我们分析出JVM在执行的过程中都干了些什么。 另外,自己在学习过程中,写的很多的这种破坏例程,应该有意识的分门别类的保存下来,在工作中积累的典型例程也应该定期整理,日积月累,自己就有了一个代码库了。 遇到类似的问题,到代码库里面 Copy & Paste ,Search & Replace,就好了,极大提高了开发速度。 最理想的情况是把一些通用的例程自己再抽象一层,形成一个通用的类库,封装好。 那么可复用性就更强了。 所以我觉得其实不是特别需要例程的,自己写的破坏例程就是最好的例子,如果你实在对自己写的代码不放心的话,我强烈推荐你看看JDK基础类库的Java源代码。 在JDK安装目录下面会有一个,解开来就可以完整的看到整个JDK基础类库,也就是的Java源代码,你可以参考一下 Sun是怎么写Java程序的,规范是什么样子的。 我自己在学习Java的类库的时候,当有些地方理解的不是很清楚的时候,或者想更加清晰的理解运作的细节的时候,往往会打开相应的类的源代码,通过看源代码,所有的问题都会一扫而空。
能自己做彩铃吗?注意是彩铃,不是铃声!
要做为一名彩铃制作者,我上面说的一些话你就不得不考虑一下。 第一、你要知道什么人在用彩铃,它的最大受众群是那部分人?答案是正在有越来越多的人使用彩铃,它的最大受众群是年轻人。 第二、你要知道如今什么样的彩铃最流行,它们分别是那几类。 如今最流行的彩铃,莫过于好的流行歌曲类、好的原创搞笑类、以及一些经典的温情类和音效类彩铃。 第三、你要有敏锐的观察力,时刻留意身边发生的事乃至世界上大家关注的事。 第四、你要在录音和制作彩铃的技术上多下功夫。 下面我们逐一从彩铃的策划、录音以及制作上仔细探讨一下。 首先是策划,一个好的彩铃的诞生,首先是它的创意。 关于创意,我个人认为: 一、紧跟流行。 我们说如今彩铃的最大受众群是年轻人,追求流行本身又是年轻人的特质,所以把握流行元素非常重要。 二、套用经典。 经典就是经典,无论它出现在电影电视上还是书本报纸上,只要人们认同它并经久不衰的传播它,它就是非常是成功了,我们如果在经典上做文章,使之更有新意,那么我们做出的东西往往能事半功倍。 三、利用自己的资源特点求创新 。 你擅长什么就不要浪费什么,模仿力、幽默感、独特的声线、丰富的阅历,这都是你的本钱。 四、避免空洞,要有血有肉。 彩铃最初出现,很多原创类的内容都只是,“接电话,不接电话”几个词翻来覆去。 如今人们更喜欢,也更需要有实质内容的彩铃,即使是说不接电话,也要说出个所以然来。 五、抓受众人群的心理,产品内容要贴切。 年轻人喜爱流行、另类、搞笑;上点年纪的人喜欢实用、安静。 在做一条彩铃之前你要知道你是为那部分人而做,明确之后,你的策划就要切实有效。 六、应以搞笑为主。 彩铃作为缓解主叫用户情绪的工具, 最好的办法就是使它能逗的主叫用户开心。 所以搞笑彩铃也是原创类彩铃中人们最喜欢的一种。 七、彩铃的名字要吸引人。 一条原创类彩铃,人们往往是从名字来认识它的,名字吸引人它就成功了一大步。 所以好彩铃要有好名字才算是成功。 然后我们说说录音,这也是至观重要的一步: 一、脑配置方面的要求 目前市场上的电脑配置基本能满足一般爱好者的录音的需要,因为录音软件在进行录音及音频处理会占用较大的资源,所以内存建议最好在256M以上,以防止出现资源不足等情况。 声卡方面,一般的就可以,例如:创新的SB Live!系列声卡。 话筒要稍微好一点,最好不要使用用电脑麦克。 由于低档驻极体电容传声器指向性差,容易感受外界噪音,而且频率响应差,录进去的歌声会很干瘪且平淡无味,因此我推荐使用质量好点的动圈话筒。 对于专业的录音室,配置方面我就无须多说了。 一般用户在录制前,最好把电脑录音属性里的麦克风选项中的高级里的MIC增强的勾去掉。 这样录制时的杂音会小一些。 二、录音时要防止喷麦、爆音等等,不要把嘴直接对着话筒,要稍微有些距离和角度。 而且不要时远时近,否则录出来来的声场会不一样。 还有一点,要注意环境音不要太嘈杂,尽量安静!这对后期很重要。 三、录音乐彩铃时要关闭音箱,通过耳机来监听伴奏,跟着伴奏进行演唱和录音,录音前,要调节好你的总音量及话筒音量,话筒的音量最好不要超过总音量,略小为好,因为如果话筒音量过大,会导致录出的波形是方波,这种波形的声音是失真的,也是无用的。 四、录音时一定要放的开,把情绪全投入进去,一首好的彩铃,是饱含着大情绪的。 没有情绪的彩铃就像一个没有表情的人,索然无味。 最后是制作,好的制作会有你意想不到的效果: 一、软件的选用。 如今市面上流行的音频制作软件大部分都能完成彩铃的制作。 比如GOLDWAVE、SONGFORG、CAKEWORK、COBASD等等,它们中有的操作烦琐,有的太过专业,往往使彩铃制作爱好者望而却步,其实完全不必,还有一款音频制作软件叫ADO AUDITION 它的前身就是COOL EDIT 这款软件操作简单,实用性强,是彩铃制作爱好者的首选。 二、软件的使用。 下面我就简要说一说关于ADO AUDITION的使用。 1、安装软件。 和安装其它软件一样,没有什么特别的地方。 2、安装插件及汉化。 在软件装完后, 找到你的ADO AUDITION安装目录,在里面建一个DX目录,然后把插件都安装在这个目录里即可。 它们的汉化包也要装在DX这个目录下。 ADO AUDITION的插件包括:Waves 4.0、ultrafunk3、.v1.3 、、 antares tube、 BBE v2.0 3、打开软件,熟悉界面。 在桌面上双击ADO AUDITION的图标,软件就会打开,软件的右侧有很多音轨。 4、插入伴奏。 假如我们要录一首原创歌曲类彩铃,那么在多音轨界面右击音轨1空白处,点插入-音频文件,选择你的伴奏文件(wav或mp3均可,建议使用wav的文件)。 5、准备录音。 如果选择将你的人声录在音轨2,就在按下音轨2 左侧的“R”按钮。 6、开始录音。 按下软件界面左下方的红色录音键,跟随伴奏音乐开始演唱和录制。 7、试听。 录音完毕,可点软件界面左下方播音键进行试听,看是否满意,是否还要重新录制。 如需重新录制就DEL掉该条,然后跳回第五步。 8、准备编辑。 .双击音轨2进入波形单轨编辑界面。 9、降噪。 先点击软件界面左下方的波形水平放大按钮(带+号的两个分别为水平放大和垂直放大)放大波形,以找出一段环境音作噪声采样波形。 (建议录音时在前面或后面空出几秒只录环境音,这样后期降燥的效果会更好)。 然后点鼠标左键拖动,直至高亮区完全覆盖你所选的那一段波形。 接着打开“效果--噪声消除--降噪器”准备进行噪声采样,降噪器中的参数按默认数值即可,随便更动,有可能会导致降噪后的人声产生较大失真。 点击“噪音采样” 然后关闭降噪器。 选中全部波形,再打开“效果--噪声消除--降噪器”,点击“确定”。 OK,降噪完毕,注意千万不能降的太狠,也就是环境音选择不能太大,否则人声就会失真透亮。 10、高音激励处理。 a)、点击“效果--DirectX--BBE Sonic Maximizer”打开BBE高音激励器 b)、加载预置下拉菜单中的各种效果(或手动调节)点激励器右下方的“预览”进行反复的试听,直至调至满意的效果后,点确定对原声进行高音激励。 (此过程目的是为了调节所录人声的高音和低音部分,使声音显得更加清晰明亮或是厚重。 激励的作用就是产生谐波,对声音进行修饰和美化,产生悦耳的听觉效果,增强声音的频率动态,提高清晰度、亮度、音量、温暖感和厚重感,使声音更有张力。 ) 11、压限处理 a)、点击“效果--DirectX--Waves--C4”打开WaveC4压限效果器。 b)、加载预置下拉菜单中的各种效果后(或手动调节)点右下方的“预览”进行反复的试听,直至调至满意的效果后,点确定对原声进行压限处理。 (压限的目的就是把你录制的声音从整体上调节的均衡一些,不至忽大忽小,忽高忽低。 ) 12、混响处理 a)、点击“效果--DirectX--Ultrafunk fx--Reverb R3”打开混响效果器 b)、加载预置下拉菜单中的各种效果后(也可手动调节)点右下方的“预览”进行反复的试听,直至调至满意的混响效果后,点确定对原声进行混响处理。 (做过混响处理后,可以使你的声音显得不那么干涩,变的圆润和厚重一些。 ) 至此,对人声的处理全部结束。 13、混缩合成 a)、点“编辑--混缩到文件--全部波形”便可将伴奏和处理过的人声混缩合成在一起 b)、点“文件--另存为”将混缩合成后的文件存为wav格式。 一条彩铃就此完成,新鲜出炉了,怎么样其实也并不是很难吧!
笔记本突然蓝屏???
1.重要文件损坏或丢失引起的蓝屏故障(包括病毒所致)。 实例:Win98中的VxD(虚拟设备驱动程序)或是.DLL动态连接库 之类的重要文件丢失,情况一般会比较严重,会出现“蓝屏警告”。 解决方法一:记下所丢失或损坏的文件名用Win98启动盘中的“Ext”命令从Win98安装盘中提取和恢复被损坏或丢失的文件,步骤如下:(1)用Win98启动盘引导计算机,在提示符下敲入“Ext”命令。 (2)在提示“Please enter the path to the windows CAB files( a):”后输入Win98安装压缩包所在的完整路径,如“F\Pwin98\Win98”,完成后回车。 (3)在提示“Please enter the name(s)of the file(s) you want to extract:”后输入你记下的丢失文件名,如“Bios.Vxd”,回车。 (4)在解压路径提示“Please enter path to extract to(‘Enter’ for current directory):”后输入文件将被解压到的完整路径,如“C \Windows\System”并敲回车。 (5)最后出现确认提示“Is this Ok?(y/n):”,输入“y”后回车。 “Ext”程序会自动查找安装盘中的CAB压缩包,并将文件释放到指定的位置。 (6)重新启动即可。 解决方法二:用杀毒软件杀毒。 有的病毒可能会破坏注册表项杀毒后注册表应恢复中毒之前的备份。 解决方法三:如果能启动图形界面,可以采取重装主板以及显卡的驱动程序,和进行“系统文件扫描”来恢复被破坏或丢失的文件。 “系统文件扫描”的方法为单击“开始/程序/附件/系统工具/系统信息/工具/系统文件检查器”,然后扫描改动过的文件即可。 2.注册表损坏导致文件指向错误所引起的蓝屏。 实例:注册表的擅自改动(包括人为地改动和软件安装时的自动替换)其现象表现为开机或是在调用程序时出现蓝屏,并且屏幕有出错信息显示(包含出错的文件名)。 解决方法一:恢复备份。 (1)单击“开始/关机/重新启动计算机并切换到MS-DOS方式”,然后单击“是”;(2)进入Windows目录下。 例如,如果你的Windows安装在“C\Windows” 目录下,应键入以下内容“CD C\WINDOWS”后回车;(3)键入“SCANREG\RESTORE”后回车。 (4)按照上述步骤,可以将注册表恢复到最近一次启动计算机时的状态。 解决方法二:删除键值。 如果是在卸载程序后出现蓝屏的话,笔者断定故障是由于程序卸载不完善造成的。 解决这类问题非常简单,首先你要记下出错的文件名,然后再到注册表中找到以下分支“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD”。 在“查找”中输入刚才的文件名,把查到的键值删除即可。 此时,千万不要忘记备份注册表哦!典型案例:笔者在删除金山毒霸时中途死机,重新启动后刚看到桌面的图标就出现蓝屏,并伴有错误信息出现。 错误信息中提到Kavkrnl.vxd文件找不到,笔者首先根据文件名的前两个字符确定该文件不是Win98的系统文件,ka开头的应是金山毒霸的虚拟设备驱动程序。 基本判断为文件指向错误,于是决定删除它在注册表中相应键值。 在注册表编辑器的查找中输入“Kavkrnl.vxd”,将它在“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD”中的相应主键值删除,重启后故障消除。 3.System.ini 文件错误引起的“蓝屏”。 实例:软件卸载或是安装后未即时更新System.ini 文件所造成的错误。 解决方法:禁用注册表中该项或是重新安装相应的软件或驱动程序。 4.Win98自身的不完善造成的蓝屏。 实例:Win98的sp1和Microsoft的Vxd_fix.exe补丁程序对Win98的稳定性起着至关重要的作用。 解决方法:快去下载吧,如华军网站南京站http//nj.onlinedown.net/Win98SP1.htmWin98sp1 及http//nj.onlinedown.net/Windows98VxDpatch.htm Vxd_fix.exe 。 5.系统资源耗尽引起的蓝屏故障。 实例:蓝屏故障常常发生在进行一项比较大的工作时,或是在保存复制的时候,且往往发生得比较突然。 这类故障的发生原因主要是与三个堆资源(系统资源、用户资源、GDI资源)的占用情况有关。 解决方法:打开你的资源状况监视器,看一下剩余资源,如果你的三种资源都在50%甚至更低,就很容易出现诸如“非法操作”、“蓝屏”或“死机”故障。 为此,必须减少资源浪费,减少不必要的程序加载,避免同时运行大程序(图形、声音和视频软件),例如加载计划任务程序,输入法和声音指示器,声卡的DOS驱动程序,系统监视器程序等等。 6.DirectX问题引起的蓝屏故障。 实例:(1)DirectX版本过低或是过高;(2)游戏与它不兼容或是不支持;(3)辅助重要文件丢失;(4)显卡对它不支持。 解决方法:升级或是重装DirectX。 如果是显卡不支持高版本的DirectX那就说明你的显卡实在是太老了,尝试更新显卡的BIOS和驱动程序,否则,只好花钱升级显卡了。 7.应用软件冲突引起的蓝屏。 主要 实例:(1)反病毒软件与反病毒软件混装(2) 软件防火墙与系统自带的防火墙冲突 解决方法:(1)在安装反病毒软件时,先卸载原来的杀毒软件。 (2)在安装其它防火墙时先要关闭自带的系统防火墙。 二、硬件引起的蓝屏故障1.内存超频或不稳定造成的蓝屏。 实例:随机性蓝屏。 解决方法:先用正常频率运行,若还有问题。 找一根好的内存条进行故障的替换查找,一般可以解决。 再就是应当注意当CPU离内存很近时内存的散热问题。 2.硬件的兼容性不好引起的蓝屏。 兼容机好就好在它的性价比较高,坏就坏在它在进行组装的时候,由于用户没有完善的监测手段和相应的知识,无法进行一系列的兼容性测试,从而把隐患留在了以后的使用过程中。 实例:升级内存时,将不同规格的内存条混插引起的故障。 解决方法:注意内存条的生产厂家、内存颗粒和批号的差异,往往就是因为各内存条在主要参数上的不同而产生了蓝屏或死机,甚至更严重的内存故障。 也可以换一下内存条所插的插槽位置。 如果内存条还是不能正常工作,那就只好更换了。 此处,提醒各位:内存在整个微机系统中起着非常重要的作用,它的好坏将直接影响到系统的稳定性,所以在内存的选购时要注意,最好是有内行人陪伴,避免买到Remark过的条子或频率过低的条子。 3.硬件散热引起的“蓝屏”故障。 实例:在微机的散热问题上所出现的故障,往往都有一定规律,一般在微机运行一段时间后才出现,表现为蓝屏死机或随意重启。 故障原因主要是过热引起的数据读取和传输错误。 解决方法:采取超频的应降频,超温的应降温。 其实不一定所有的故障都那么复杂,有时候从简单的方面考虑,也能很好地解决问题要学会触类旁通。 4.I/O冲突引起的蓝屏现象。 解决方法:这种现象出现得比较少,如果出现了,可以从系统中删除带!号或?号的设备名,重新启动计算机进行确认,或者请高手手动分配系统资源。 凡事要防患于未然,下面是笔者总结出来的一些经验,可供大家参考:1 定期对重要的注册表文件进行手工备份,避免系统出错后,未能及时替换成备份文件而产生不可挽回的错误。 2 尽量避免非正常关机,减少重要文件的丢失。 如.VxD .DLL文件等。 3 对普通用户而言,只要能正常运行,没有必要去升级显卡、主板的BIOS和驱动程序,避免升级造成的危害。 4 定期检查优化系统文件,运行“系统文件检查器”进行文件丢失检查及版本校对。 检查步骤参见前面相关介绍。 5 减少无用软件的安装,尽量不用手工卸载或删除程序,以减少非法替换文件和文件指向错误的出现。 6 如果不是内存特别大和其管理程序非常优秀,尽量避免大程序的同时运行,如果你发现在听MP3时有沙沙拉拉的声音,基本可以判定该故障是由内存不足而造成的。
发表评论