什么是虚拟机虚拟机:是一款软件,用来执行一系列虚拟计算机指令虚拟机可以分为系统虚拟机,程序虚拟机,vmware就属于系统虚拟机,完全就是对计算机的仿真。程序虚拟机的代表就是java虚拟机,在虚拟机中执行的指令就是java字节码指令。java虚拟机存在内存之中,看不见,和vmware不同,vmware是可以看见的。我们来看看JVM的大概 类加载器Class Loader负责加载class文件,class文件在文件开头有特定的文件标识(cafe babe),将class文件加载到内存中,并将这些内容
垃圾回收(Garbage Collection)垃圾回收(Garbage Collection),简称GC,就家里的垃圾筒来说,如果不断的有垃圾仍入,垃圾筒一满,我们就会倒垃圾,内存中也是一样,存在着各种垃圾,我们也需要把它清除。那么内存中的垃圾到底是什么呢?GC中的垃圾,特指存在于内存中的,不会在被使用的对象。你可能会疑惑,如果我不清除垃圾会怎样呢?如果内存中存在着大量垃圾,不及时回收,占着空间不放,这时要使用内存空间时,内存空间不够,很大可能就会发生内存溢出。那么如何高效的判断垃圾、清除垃圾呢,
前面我介绍了四种垃圾回收算法,以及它们的优势和特点。但是并没有一种算法能完全替代其他算法,这不时代在进步,技术也在进步,为了让系统的性能更优,出现了分代算法和分区算法。分代算法原理:根据回收对象的特性,把内存区域划分为几块,根据每块内存区间的特点,使用不同的垃圾回收算法,以提高垃圾回收效率。一般来说,Java虚拟机会将新建的对象都放入新生代的内存区域,新生代的特性是朝生夕灭,大约90%的对象会很快被回收,所以适用于复制算法。而老年代中的对象都是从很多次垃圾回收中存活下来的,生命力极强,如果用复制算法,
class文件的装载流程如下,
前面提到过的类加载阶段,这个阶段一个重要的角色就是ClassLoader(类加载器),它的主要作用就是从外界获取二进制数据流。所有的Class都是由类加载器进行加载的,因此只能影响类的加载阶段,而不能影响到其他阶段。在标准的Java程序中,Java虚拟机会创建三类ClassLoader为整个应用程序服务BootStrap ClassLoaderExtension ClassLoaderAppClassLoader当然用户还可以自定义类加载器,以拓展Java虚拟机获取Class数据的能力。
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号