java程序内存加载_java程序运行的时候,是把所有的class文件都加载到内存吗?还是用的什么加载什么?...
时间: 2024-06-01 09:08:05 浏览: 222
Java程序在运行的时候,并不是把所有的class文件都加载到内存中,而是在需要使用某个类的时候才会加载这个类的class文件并将其转换成一个类的实例对象。
Java虚拟机(JVM)使用的是类加载器(ClassLoader)机制,类加载器负责将class文件加载到内存中,并转换成一个类的实例对象。Java中有三种类加载器:
1. 引导类加载器(Bootstrap ClassLoader):它是最顶层的类加载器,负责加载Java的核心库,如rt.jar、resources.jar、charsets.jar等。
2. 扩展类加载器(Extension ClassLoader):负责加载Java的扩展库,默认的扩展库位于JDK的jre/lib/ext目录下。
3. 应用程序类加载器(Application ClassLoader):也称为系统类加载器,负责加载应用程序的类路径(classpath)中指定的类库。
类加载器采用的是双亲委派模型,即当一个类加载器在加载某个类时,它首先会将这个任务委托给它的父类加载器去完成,如果父类加载器还存在父类加载器,则会一直向上委托,直到委托给引导类加载器为止。如果所有的父类加载器都无法完成加载任务,那么该类加载器才会自行尝试加载该类。这种机制可以保证Java程序的安全性,防止恶意类的加载。
阅读全文