系统-灭霸 (系统灭霸)

教程大全 2025-07-20 01:12:12 浏览

系统“灭霸”——Java虚拟机

2020-06-03 14:43:26虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Java虚拟机,简称JVM)。

概念

虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Java虚拟机,简称JVM)。

Java虚拟机阵营:Sun HotSpot VM、BEA JRockit VM、ibm J9 VM、Azul VM、Apache Harmony、Google Dalvik VM、Microsoft JVM…

启动流程

基本架构

Java运行时编译源码(.java)成字节码,由jre运行。jre由java虚拟机(jvm)实现。Jvm分析字节码,后解释并执行。

JVM由三个主要的子系统构成:

1.类加载器子系统

2.运行时数据区(内存)

3.执行引擎

类加载器子系统

类装载包括了加载,连接(验证、准备、解析(可选)),初始化。其中类加载工作由ClassLoader及其子类负责。

加载:在硬盘上查找并通过IO读入字节码文件

连接:执行校验、准备、解析(可选)步骤

校验,校验字节码文件的正确性

准备,给类的静态变量分配内存,并赋予默认值

解析,将符号引用转为直接引用,类装载器装入类所引用的其他所有类

初始化:对类的静态变量初始化为指定的值,执行静态代码块

灭霸

类加载器体系结构

1.启动类加载器:负责加载JRE的核心类库,如jre目标下的rt.jar,charsets.jar等.

2.扩展类加载器:负责加载JRE扩展目录ext中JAR类包

3.系统类加载器:负责加载ClassPath路径下的类包

4.用户自定义加载器:负责加载用户自定义路径下的类包

类加载机制(双亲委派)

全盘负责委托机制。全盘负责,当一个ClassLoader加载一个类时,除非显示的使用另一个ClassLoader,该类所依赖和引用的类也由这个ClassLoader载入。委托机制:指先委托父类加载器寻找目标类,在找不到的情况下采用自己的路径中查找并载入目标类

运行时数据区

堆(Java堆)

虚拟机启动时创建,用于存放对象实例,几乎所有的对象(包含常量池)都在堆上分配内存,当对象无法再该空间申请到内存时将抛出OutOfMemoryError异常。同时也是垃圾收集器管理的主要区域。可通过 -Xmx –Xms 参数来分别指定最大堆和最小堆。线程共享。

栈(Java栈)

是java方法执行的内存模型,为虚拟机执行java方法,每个方法在执行的同时都会创建一个栈帧(用于存储局部变量表,操作数栈,动态链接,方法出口等信息)。线程独占。

Jvm对该区域规范了两种异常:

1,线程请求的栈深度大于虚拟机栈所允许的深度,将抛出StackOverFlowError异常。

2,若虚拟机栈可动态扩展,当无法申请到足够内存空间时将抛出OutOfMemoryError。通过jvm参数–Xss指定栈空间,空间大小决定函数调用的深度。

本地方法栈

为虚拟机执行native方法,其他规范与java栈类似。不同类型的虚拟机对该区域可自由实现。线程独占。

PC寄存器(程序计数器)

用来存储待执行指令的地址。分支,循环,跳转,异常处理,线程恢复等功能都需要依赖pc寄存器。线程独占。

若线程执行的是一个java方法,则pc寄存器中保存的是待执行指令的地址。若执行的是一个native方法,则pc寄存器中为空。

元数据区

元数据区取代了永久代,本质和永久代类似,都是对JVM规范中方法区的实现,区别在于元数据区并不在虚拟机中,而是使用本地内存。元数据区在频繁使用,也会发生OutOfMemory异常。

元数据区的动态扩展,默认–XX:MetaspaceSize值为21MB的高水位线。一旦触及则Full GC将被触发并卸载没有用的类(类对应的类加载器不再存活),然后高水位线将会重置。新的高水位线的值取决于GC后释放的元空间。如果释放的空间少,这个高水位线则上升。如果释放空间过多,则高水位线下降。

执行引擎

执行引擎读取运行时数据区的字节码并逐个执行

(1) 解释器:解释器更快地解释字节码,但执行缓慢,解释一句执行一句。

(2) JIT编译器:JIT编译器消除了解释器的缺点。执行引擎通过解释器转换字节码,当它发现重复的代码时,将使用JIT编译器,它编译整个字节码并将其更改为本地代码。这个本地代码将直接用于重复的方法调用,这提高了系统的性能。

JIT的构成组件为:

中间代码生成器(Intermediate Code Generator):生成中间代码 。

代码优化器(Code Optimizer):负责优化上面生成的中间代码 。

目标代码生成器(Target Code Generator):负责生成机器代码或本地代码 。

分析器(profiler):一个特殊组件,负责查找热点(被多次调用的方法)

(3) 垃圾收集器:收集和删除未引用的对象。程序可调用System.gc()触发垃圾收集,但不能保证执行。

本地方法接口(JNI):JNI将与本机方法库进行交互,并提供执行引擎所需的本机库。

本地方法库:执行引擎所需的本机库的集合。

垃圾收集(GC:Garbage Collection)

1,如何识别垃圾,判定对象是否可被回收?

引用计数法:给每个对象添加一个计数器,当有地方引用该对象时计数器加1,当引用失效时计数器减1。用对象计数器是否为0来判断对象是否可被回收。缺点:无法解决循环引用的问题

根搜索算法:也称可达性分析法,通过“GC ROOTs”的对象作为搜索起始点,通过引用向下搜索,所走过的路径称为引用链。通过对象是否有到达引用链的路径来判断对象是否可被回收(可作为GC ROOTs的对象:虚拟机栈中引用的对象,方法区中类静态属性引用的对象,方法区中常量引用的对象,本地方法栈中JNI引用的对象)

2,Java 中的堆是 GC 收集垃圾的主要区域,GC 分为两种:Minor GC、Full GC ( 或称为 Major GC )。

Minor GC:新生代(Young Gen)空间不足时触发收集,由于Java 中的大部分对象通常不需长久存活,新生代是GC收集频繁区域,所以采用复制算法。

Full GC:老年代(Old Gen )空间不足或元空间达到高水位线执行收集动作,由于存放大对象及长久存活下的对象,占用内存空间大,回收效率低,所以采用标记-清除算法。

GC算法

按照回收策略划分为:标记-清除算法,标记-整理算法,复制算法。

1.标记-清除算法:分为两阶段“标记”和“清除”。首先标记出哪些对象可被回收,在标记完成之后统一回收所有被标记的对象所占用的内存空间。不足之处:1.无法处理循环引用的问题2.效率不高3.产生大量内存碎片(ps:空间碎片太多可能会导致以后在分配大对象的时候而无法申请到足够的连续内存空间,导致提前触发新一轮gc)

2.标记-整理算法:分为两阶段“标记”和“整理”。首先标记出哪些对象可被回收,在标记完成后,将对象向一端移动,然后直接清理掉边界以外的内存。

3.复制算法:把内存空间划为两个相等的区域,每次只使用其中一个区域。gc时遍历当前使用区域,把正在使用中的对象复制到另外一个区域中。算法每次只处理正在使用中的对象,因此复制成本比较小,同时复制过去以后还能进行相应的内存整理,不会出现“碎片”问题。不足之处:1.内存利用率问题2.在对象存活率较高时,其效率会变低。

按分区对待可分为:增量收集算法,分代收集算法

1.增量收集:实时垃圾回收算法,即:在应用进行的同时进行垃圾回收,理论上可以解决传统分代方式带来的问题。增量收集把对堆空间划分成一系列内存块,使用时先使用其中一部分,垃圾收集时把之前用掉的部分中的存活对象再放到后面没有用的空间中,这样可以实现一直边使用边收集的效果,避免了传统分代方式整个使用完了再暂停的回收的情况。

2.分代收集:(商用默认)基于对象生命周期划分为新生代、老年代、元空间,对不同生命周期的对象使用不同的算法进行回收。

按系统线程可分为:串行收集算法,并行收集算法,并发收集算法

1.串行收集:使用单线程处理垃圾回收工作,实现容易,效率较高。不足之处:1.无法发挥多处理器的优势 2.需要暂停用户线程

2.并行收集:使用多线程处理垃圾回收工作,速度快,效率高。理论上CPU数目越多,越能体现出并行收集器的优势。不足之处:需要暂停用户线程

3.并发收集:垃圾线程与用户线程同时工作。系统在垃圾回收时不需要暂停用户线程

GC收集器

垃圾收集算法是内存回收的理论基础,而垃圾收集器就是内存回收的具体实现。

1.Serial 收集器主要针对新生代的收集,是最基本最古老的收集器,它是单线程收集器,工作时必须暂停所有用户线程。该收集器采用复制算法。

Serial Old收集器主要针对老年代收集,采用标记-整理算法,实现简单高效,但会停顿。

2.ParNew收集器是Serial的多线程版本,针对新生代采用复制算法使用多线程进行垃圾收集(并行收集器,响应优先)。

3.Parallel Scavenge采用复制算法针对新生代的多线程收集器(并行收集器,吞吐优先)。可控制吞吐量和停顿时间,即吞吐量 = 运行用户代码时间 / (运行用户代码时间+垃圾收集时间)。

Parallel Old收集器是Parallel Scavenge收集器的老年代版本(并行收集器),使用多线程和标记-整理算法。

4.CMS(Current MarkSweep)收集器针对老年代,是一种以获取最短回收停顿时间为目标的收集器,它是一种并发收集器,采用的是标记-清除算法。

5.G1的新生代类似于ParNew,采用复制算法算法,当新生代占用达到一定比例的时候,开始收集。老年代类似于CMS,不同点是采用标记-整理算法。

G1因此它是一款并行与并发收集器,能充分利用多CPU、多核环境。并且它能建立可预测的停顿时间模型。

与CMS收集器相比G1收集器有以下特点:

1. 空间整合,G1收集器采用标记-整理算法,不会产生内存空间碎片。分配大对象(直接进Humongous区,专门存放短期巨型对象,不用直接进老年代,避免Full GC的大量开销)不会因为无法找到连续空间而提前触发下一次GC。(年青代拷贝、老年代转移对象无空闲分区、巨型对象无连续分区时触发Full GC,开销极大应该避免)

2. 可预测停顿,降低停顿时间是G1和CMS的共同关注点,但G1除了追求低停顿外,还能建立可预测的停顿时间模型,能让使用者明确指定在一个长度为N毫秒的时间内,消耗在垃圾收集上的时间不得超过N毫秒,几乎达到Java实时系统(RTSJ)级的垃圾收集器。

3.G1将Java堆划分为多个大小相等的独立区域(Region),虽保留新生代和老年代的概念,但不再是物理隔阂了,它们都是(可以不连续)Region的集合。

收集器常用组合

JVM性能调优思路

理解GC日志

常见异常

GC参数

堆栈设置

垃圾回收统计信息

收集器设置

并行收集器设置

CMS收集器设置

G1收集器设置

性能分析和监控工具


为什么电脑系统运行很慢?

系统慢的原因有以下几点:1、先查系统盘(一般为C盘)剩余空间是否充足;一般至少需有2G以上的空间。 另外一般的常用的应用软件(除杀毒软件外)不要安装在系统盘中;可单独搞一个分区专放应用程序。 2、对系统进行清理(可系统自带的磁盘清理程序或金山清理专家等专业的清理软件)3、对系统进行磁盘碎片整理(可用VOPT等专业软件,主要是速度比系统自带的要快些)3、对系统进行木马病毒的查杀(先用恶意软件清除助手清理电脑中的恶意软件,将杀毒软件升级至最新后对系统进行杀毒)4、如果以上仍不能解决系统运行速度慢,那应该考虑是硬件方面的问题了,主要从以下几点进行考虑:系统的内存是否太小、硬盘是否有坏道;各硬件间是否有冲突

如何用ghost回复系统

双击鼠标左键实现自动滚屏,单击鼠标右键停止滚屏。 Windows9X 系统的易破坏和不稳定性是我们大家都有目共睹的,天长日久,我们的系统中便会留下一堆堆垃圾文件,使系统相当臃肿,然后就是系统频繁出错甚至死机。 就算您使用的是WINDOWS NT 或者 WINDOWS2000 系列,也存在这样或者那样的问题,因而对于常常使用计算机的人来说重新安装操作系统便是非常自然的了,安装 WINDOWS 系统最多只要一个小时,可是让系统恢复到您常常使用的习惯状态,也就是说安装形形色色的程序软件,这却是一个长久而且腻烦的过程,我想,即使您已经是计算机高手了,恐怕您需要安装的软件也就越多,这不得不说是一个让人头大的问题,GHOST 软件的出现,让我们大家都可以摆脱安装系统的繁复过程,您在安装系统时,只要把所有的系统组件都安装上,然后安装各种各样的系统补丁,这样就可以创建第一个 GHO 文件,这个备份文件可以让您在您的应用软件都已经过时的时候重新安装软件,您另外也可以在安装了所有您所熟悉的软件后再创建一个 GHO 备份文件,这样您就可以随时恢复到您所熟悉的工作环境。 GHOST 是 Symantec(赛门铁克)公司出品的系统备份软件,GHOST 就是“General Hardware O riented Software Transfer”英文的缩写,意思是“面向通用型硬件传送软件”。 由于 GHOST 是英文“鬼、精灵”的意思,我们大家都把它叫做“恢复精灵”。 GHOST 目前最新版本是 7.0和2002 ,GHOST 软件最大的作用就是可以轻松的让您把磁盘上的内容备份到镜像文件中去,也可以快速的把镜像文件恢复到磁盘,还您一个干净的操作系统!我曾经听别人说“GHOST 软件并不稳定”,其实这是不懂得计算机的人说的废话,GHOST 是我们个人计算机用户使用频率最高,效率最好的系统维护软件,现在类似的系统备份软件很多,可是最稳定、最普遍的还是 GHOST 软件。 在广大网吧,如果计算机的配置大多都一样,那么 GHSOT 软件还是大有用武之地的,之所以说 GHOST 软件不稳定,我想可能是因为该计算机的 GHOST 文件不是本机文件,而是从其它计算机上拷贝过来的。 不是自己的东西总是不很稳定的。 注意:使用 GHOST 备份系统时,您必须要保证要备份的系统干净无毒,而且最好已经经过了系统优化,安装了最新的软件,最新的驱动程序、系统补丁等等内容!最好再执行磁盘扫描和磁盘整理!在恢复 GHOST 镜像时,一定要保存、备份目标盘上的重要文件,例如:My Documents 文件夹、Favorites 文件夹,这些文件夹中保存的都是您自己的重要文件,如果当时没有保存就执行恢复镜像命令了,那么就不能再恢复了。 GHOST 可以在 DOS 状态下执行,也可以在 WINDOWS 状态下执行。 在 WINDOWS 中执行 GHOST 软件时要比在 DOS 状态下执行时快 15%,但是在 DOS 状态下您可以删除 WINDOWS\ 虚拟内存管理文件(大约80兆),这样可以适当的减小备份文件。 如果您在 DOS 下操作,那么您可以用“TAB”键和“回车键”来控制选择。 现在我们来看一看如何使用 GHOST 软件来备份系统:

如何删除系统顽固文件

1、注销或重启后,再删;2、进入安全模式或用启动软盘(光盘)启动进入纯DOS,删除;3、如果是删除文件夹,从里往外删,即先进入该文件夹,删除里面所有内容,然后再返回上一层目录,删除该文件夹;4、用Windows优化大师等的文件粉碎机删除;5、Win2000/XP系统以管理员身份登录,再执行删除操作;6、如果系统是WinXP,关闭系统还原,再删;7、对于大文件,特别是压缩包文件,关闭杀毒软件的实时监控后,再删;8、注销掉预读功能再删,方法:开始→运行,输入regsvr32/,确定。 重启后再删。 完了再运行一下,恢复注册;9、用WinRAR删除,打开WinRAR,点“添加”,选中要删除的文件,在“设置”下点选“压缩后删除源文件”,压缩完成后把压缩文件也删除。 10、先对该文件所在分区进行磁盘扫描,扫描前选中“自动修复文件和扇区”,完成后再删;11、打开命令提示符窗口,然后再打开任务管理器,结束“”进程,在命令提示符窗口进入该文件所在目录,用Del命令删除,完了在任务管理器中点“文件”→新建任务→浏览→找着C:\WINDOWS\,点“确定”即可;12、Win2000/XP系统,清除页面文件再删除。 方法:系统属性→高级→性能设置→高级→虚拟内存更改→把页面文件大小设为“无分页文件”,重启后进行删除。 然后恢复原来的页面文件。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐