课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
类是程序员在学习java编程开发语言的时候需要重点掌握的一个编程概念,下面我们就通过案例分析来了解一下,java编程类加载机制包含哪些内容。
1、JVM和类
(1)运行java命令:java带有main方法的类名
命令的作用:启动jvm,并加载字节码,执行程序
当调用java命令来运行某个java程序时,该命令将会启动一个jvm进程(同一个jvm中的所有线程变量都处于处于同一个进程中,共享给jvm的内存区间。)
每次启动一个程序,在任务管理器,就会出现一个进程
(2)jvm退出的情况(jvm进程一旦结束,该进程中内存中的数据会丢失):
程序正常执行结束
使用System.exit(0)方法
出现异常,没有捕获异常
平台强制结束jvm进程(在任务管理器那里关闭掉java进程)
2、类加载机制:
(1)将类加载进内存中(三个步骤:加载、连接、初始化)
当程序主动使用到某个类时,若该类还没有被加载进内存中,则系统会通过加载、连接、初始化三个步骤对该类就那些初始化操作。
在程序中,每次要用到某类,都是需要将该类加载进内容的(将类加载进内存包括了三个步骤:加载、连接、初始化)
卸载类:当虚拟机停止工作的时候,该类就从虚拟机中卸载了
类加载进虚拟机的特点:当类一旦加载进虚拟机,就不卸载,永驻内存,直到虚拟机停止工作。
(2)类加载机制【加载、连接、初始化、使用、卸载】:
1)类的加载:是指将类的class文件(字节码文件)载入内存之中,并为之创建一个java.lang.Class对象【字节码对象】
万物皆对象,描述对象的类也是一种对象,我们使用java.lang.Class对象【字节码对象】来描述类这种对象。
□类的加载过程是由类加载器(ClassLoader)完成,类加载器通常是由jvm提供的,我们称之为系统类加载器,我们也可以自定类加载器(需要继承ClassLoader类)
不同的类加载器可以实现加载本地字节码文件,jar包中的字节码,通过网络加载字节码等等。
□为什么已经有系统自带的类加载器,还需要自定义的类加载器?(加载方式不符合需求)
当我们使用框架时,需要加载配置文件时,通过系统加载器的加载方式无法加载配置文件,需要自定义类加载器,重新去定义加载方式。
2)类的连接:当类被加载进内存之后,系统为之生产了一个对应的Class对象【字节码对象】,接着把类的二进制数据合并到JRE中。
验证:检测被加载的类是否有正确的内部结构。
准备:负责为类的static变量分配内存,并设置默认值。
解析:把类的二进制数据中的符号引用替换为直接引用。
3)类的初始化:在此阶段,jvm负责对类进行初始化,主要就是对static变量进行初始化。
类的初始化包含如下几个步骤:
当类还没被加载和连接,则程序先加载并连接该类
当该类的父类还没有被初始化,则先初始化其父类
当类中有初始化语句(静态代码块---一般用来加载资源),则系统依次执行这些初始化语句
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。