java面试一日一题:讲下在什么情况下会发生类加载
2024-08-24 10:16:08
问题:请讲下在什么情况下会发生类加载?
分析:该问题主要考察对java中类加载的知识,什么是类加载,为什么会发生类加载,什么情况下发生类加载?
回答要点:
主要从以下几点去考虑
1、什么是类加载;
2、为什么会发生类加载;
3、什么情况下发生类加载;
大家都知道java程序要运行,必须要把源文件(.java)编译成字节码(.class),jvm的输入是字节码文件,需要把字节码文件加载到jvm内存中,如何解析字节码文件,按照什么样的规则去解析,解析后放在内存中的什么位置,这些过程可以理解未类加载。通俗点讲,一个java文件要运行必须通过类加载的过程,转化为JVM可以识别的数据结构。在JVM中规定了加载的步骤,可参考:《java面试一日一题:java的类加载过程》
至于为什么会发生类加载的过程,那肯定是要运行java程序,因为java源程序JVM是不可识别的,编译后的字节码文件JVM可以识别,但是也要转化成JVM可以识别的数据结构,所以要有类加载的过程;
java程序对类的使用分为主动使用和被动使用,只有主动使用才会发生类的加载,下面看发生类加载的情形,
1、访问类的静态变量,如果类没有加载,则首先会执行类加载;
2、访问类的静态方法,如果类没有加载,则首先会执行类加载;
3、初始化一个类的子类的时候,如果子类没有加载,则首先执行子类的加载;
4、使用new关键字,生成一个对象,如果该类没有加载,则首先加载该类;
5、使用反射,Class.forName();如果该类没有加载,则执行该类的加载;
6、标记为启动类的类,如果没有加载则首先执行该类的加载,常见的是main方法所在的类;
7、1.7提供的动态语言支持;
最新文章
- 全面解析sizeof(下) 分类: C/C++ StudyNotes 2015-06-15 10:45 263人阅读 评论(0) 收藏
- Grand Central Dispatch (GCD)
- android应用中去掉标题栏的方法
- Java Hour 16 来个CURD吧!
- web网站加速之CDN(Content Delivery Network)技术原理
- C# Attribute (上)——Attribute初体验
- freemarker声明变量
- URL参数中有 特殊符号或加密数据 的问题解决
- HashMap----工作原理
- FreeMarker生成word的代码
- Supervisor的作用与配置
- Java并发编程73道面试题及答案 —— 面试稳了
- 将一台电脑上的虚拟机上的系统复制到另一台电脑的虚拟机上!!!and想询问大神们问题的解决办法??
- 打开和写入word文档
- 《DSP using MATLAB》Problem 5.2
- divide_3
- tornado登陆装饰器
- Gym - 101020H Weekend floyd+next_permutation
- Android-Java-了解编译
- Oracle连接步骤