浅谈jvm如何加载一个类
我们写的代码会存在java文件当中,然后通过编译器(例如idea,eclipse等),编译成class文件,类加载器会读取class文件,然后存储到jvm的方法区当中,而方法区里面存储的是类型信息,然后创建class对象存到堆里面。
问:这个class文件,谁来负责加载到内存中?
答:类装载器
1.类装载器负责从文件系统或者网络当中加载class文件(会通过class文件开头特定的文件标识来查找判断)。
2.类装载器(ClassLoader)只负责class文件的加载,至于加载后是否可以运行不归他管,则由执行引擎(Execution Engine)决定。
问:class文件,存放在内存哪个位置?
答:类加载器从class文件中抽取类信息并放在方法区中,类信息:方法代码,变量名,方法名,访问权限,返回值等等。
问:class对象存储在哪里?
答:每当加载器从class文件中加载一个类时,都会加载类的类型信息到方法区中,同时生成一个class对象,class对象可以new多个对象实例。class对象存储在堆里面。
