在我们讨论java的基础部分时,大家都有用过这个工具包,同时还会讲到另一个重要概念。从名称上我们翻译一下,就是虚拟的计算机。对于jvm模块的内容比较难懂,所以我们可以先从它的一些机制入手:类加载、双亲委派、全盘负责委托机制。下面就这些机制分别带来讲解。
1.类加载机制
分为加载、验证 、准备 、解析 、初始化、 使用 、卸载。
(1)加载
在硬盘上查找并通过读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象 等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口 。
(2)验证
校验字节码文件的正确性 。
(3)准备
给类的静态变量分配内存,并赋予默认值 。
(4)解析
将符号引用替换为直接引用,该阶段会把一些静态方法(符号引用,比如main()方法)替换为指向数据 所存内存的指针或句柄等(直接引用),这是所谓的静态链接过程(类加载期间完成),动态链接是在程 序运行期间完成的将符号引用替换为直接引用,下节课会讲到动态链接 。
(5)初始化
2.双亲委派机制
对类的静态变量初始化为指定的值,执行静态代码块。
应用程序类加载器AppClassLoader加载类的双亲委派机制源码,AppClassLoader的loadClass方法最终会调用其父类ClassLoader的loadClass方法,该方法的大体逻辑如下:
首先,检查一下指定名称的类是否已经加载过,如果加载过了,就不需要再加载,直接返回。
如果此类没有加载过,那么,再判断一下是否有父加载器;如果有父加载器,则由父加载器加载(即调用parent.loadClass(name, false);)。或者是调用bootstrap类加载器来加载。
如果父加载器及bootstrap类加载器都没有找到指定的类,那么调用当前类加载器的findClass方法来完成类加载。
3.全盘负责委托机制
“全盘负责”是指当一个ClassLoder装载一个类时,除非显示的使用另外一个ClassLoder,该类所依赖及引用的类也由这个ClassLoder载入。
以上就是java之JVM各类机制整理,前两种机制有点类似父类和子类,当类加载机制无法处理时,就会交给双亲委派机制。大家看完本篇后,要加强内容方面的理解。
东饰资讯网还为您提供以下相关内容希望对您有帮助:
java语言都包含哪些内置机制?
1、Java 虚拟机(Java Virtual Machine,JVM)在一台计算机上由软件或硬件模拟的计算机。Java虚拟机读取并处理经编译过的平台无关的字节码class文件。2、垃圾收集机制(Garbage collection)在C/C++ 等语言中,由程序员负责回收无用内存。Java语言解除了程序员回收无用内存空间的责任。它提供一种系统级线程跟...
Java知识点整理归纳?
1.JVM相关(包括了各个版本的特性)对于刚刚接触的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上经验的资深开发者来说,不会JVM几乎是不可接受的。JVM作为运行的基础,很难相信对于JVM一点都不了解的人可以把语言吃得很透。我在面试有超过3年...
java虚拟机(jvm)什么是jvm?
Java虚拟机(JVM)是Java程序运行的平台,它通过软件模拟实现完整计算机系统运行环境,允许Java程序在任何操作系统上运行。JVM包含堆、方法区、栈、程序计数器等内存区域。堆区域存放new的对象,方法区存放类对象,栈区域存放局部变量,程序计数器记录内存地址。类加载机制分为加载、验证、准备、解析、初始化等...
JVM (标记-清除算法、复制算法、标记-整理算法、分代收集算法、分区算法...
在Java编程中,JVM垃圾收集器(GC)是管理内存资源的关键组件,旨在自动回收不再使用的对象以防止内存泄漏。JVM提供了多种垃圾回收算法来适应不同的内存管理需求,其中包括标记-清除算法、复制算法、标记-整理算法、分代收集算法以及分区算法。下面,我们详细探讨这些算法,以更直观的方式回答它们的作用和特点。
JVM学习笔记
方法区(Method Area)线程共享,存储类元数据、常量池、方法信息等。在Java 8中使用元空间(Metaspace)代替永久代,不再与堆连续,提高内存管理效率。学习顺序先学习内存结构,后学习垃圾回收机制,最后理解字节码结构、类加载器和运行期优化。二、JVM内存结构1. 内存区域详解程序计数器线程私有,用于跟踪...
Java程序的运行机制是怎么样的?
执行Java程序:JVM会按照程序的逻辑和功能执行Java程序。程序员可以在程序中使用Java类库和自定义类提供的方法和变量。垃圾回收:JVM还负责垃圾回收,它会自动回收不再使用的内存空间,防止程序出现内存泄漏等问题。总的来说,Java程序的运行机制可以概括为:编写源代码 -> 编译生成字节码文件 -> 解释执行...
jvm底层原理是什么呢?有大神可以说说吗?
JVM是Java虚拟机的简称,它是Java语言的核心,负责解释和执行Java代码。JVM的底层原理包括以下几个方面:1.类加载器:JVM使用类加载器将编译好的Java文件加载,在运行时将编译后的字节码转换为机器码。2.内存管理:JVM对内存进行分配和管理,包括堆、栈等多种内存结构。3.执行引擎:JVM的执行引擎可以将...
JVM 系列文章之 Full GC 和 Minor GC
在Java虚拟机(JVM)的垃圾收集机制中,Full GC和Minor GC是两种不同的收集方式,它们各自针对不同区域进行垃圾回收,以保证内存的有效管理和对象生命周期的合理控制。Full GC,顾名思义,就是收集整个Java堆空间,包括新生代(Young Generation)和老年代(Old Generation)的垃圾。在HotSpot JVM中,Full ...
什么是JAVA虚拟机
总的来说,JVM作为JAVA程序执行的基石,其功能和特性为JAVA开发者提供了极大的便利。无论是跨平台性、可移植性、内存管理和垃圾回收机制,还是动态链接和多线程支持,都使得JAVA程序在各种环境下都能流畅运行,同时也降低了开发和维护成本。因此,了解和掌握JVM的工作原理和特性,对于JAVA程序员而言,是提升...
Java垃圾回收机制GC完全指南,让你彻底理解JVM运行原理
Java的垃圾回收机制(GC)是内存管理的核心部分,确保程序在运行过程中有效释放不再使用的内存。其主要包括两个主要步骤:对象的判断和回收。首先,通过引用计数算法和可达性分析算法来判断对象是否为垃圾。由于引用计数算法的局限性,现代Java主要采用可达性分析,该算法能够处理循环引用问题。接着,垃圾收集器...