您的位置:首页 > 其它

方法区的一些细节-2

2017-08-18 14:30 190 查看
对类加载器的引用:

jvm必须知道一个类是启动加载器加载的还是用户加载器加载的,如果一个类型是用户加载器加载的,jvm会把这个类加载器的一个引用作为类信息的一部分保存到方法区。

jvm在动态连接的时候需要用到这个信息,当解析一个类型到另一个类型的引用时,必须保证两个类型都是同一个用户加载器加载的。

对Class类型的引用:

jvm为每一个加载的类型都创建一个java.lang.Class的实例。jvm通过某些方法把Class实例与存储在方法区的类型信息联系起来。

通过两种方式获取Class实例,

Class类的静态方法,Class.forName() 通过类的全限定名称获取该类的Class实例。

该类对象实例的getClass()。

Class实例中的getClassLoader()返回类加载器的引用,如果是启动加载器加载的,则为null.

方法表:

jvm为每个加载的类的类型信息中都添加了一个方法表,是一组对类实例方法的直接引用(包括父类),jvm可以通过方法表快速激活实例方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息