浅谈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对象存储在堆里面。

经验分享 程序员 微信小程序 职场和发展