zoukankan      html  css  js  c++  java
  • jvm_run-time method area

    方法区

                    官网地址: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.6

     1.  官网对于虚拟机中方法区的描述如下截图

                 从官网上描述信息:

                1.  java虚拟机的方法区是所有线程共享的.

                2. 方法区在内存中可以是地址不连续的.

                3. 用户可以自行调整方法区的最小或者最大内存

                4. 方法区随着虚拟机的创建而生成,虚拟机的销毁而消失.

                5. 当方法区的内存无法继续满足分配的需求 , 会报出 OutOfMemoryError(内存溢出)

                6. 方法区中存储包含类变量(静态变量) , 类信息 ,常量 , 即时编译的代码.

                7.  运行常量池  run-time constant pool

    2. 方法区加载信息如下 : 

       

             描述 :

       1.  类型信息 :   

             a : 类的全限定名

             b. 超类的权限定名(父类)

        c. 实现的所有接口的全限定名(java中单继承,多实现)

             d. 类型(类or接口)

             e. 类的描述字符(public peivate protected  final static abstract 等)

        2.  类型的常量池 :

             a. 该部分一个class(类或者接口)独有的.不能与方法区的运行常量池搞混.在编译阶段,一些常量就已经放入(包含一些字面值和符号引用),在类加载阶段会复制到方法区的运行常量池.

        3. 字段信息

             字段修饰符(public、protect、private、default) 2. 字段的类型 3. 字段名称

        4. 方法信息

             方法名,方法修饰符,方法参数,方法返回值等

        5. 类变量

            static修饰的成员变量, 可以直接 类.属性访问.

         6. 类加载器引用

             4种类加载器,哪个类加载器装载的此类.

         7. 指向class实例的引用

             在装载阶段,会在堆上创建一个java.lang.Class实例.(比如  Class clazz =  person.class , 而不是指的是 Person person = new Person()) .通过此实例可以得到this.getClass().getName() this.getClass().getDeclaredMethods() this.getClass().getDeclaredFields() 都是通过这个Class实例获取到的        

    3. 运行时常量池

            在加载阶段,会将类常量池的数据复制进运行时常量池.包含有字面值(string或者final修饰的常量) 和 符号引用 (其他类型的字段,方法 的符号引用)

          

           

    人总得做点什么 ,不是么
  • 相关阅读:
    solr开发从查询结果集中获取对象数据
    solr开发,提交索引数据的几种方式
    初识SolrJ开发, schema.xml的配置与服务初始化.
    实例介绍,如何在开发中将各层日志归类输出.
    springmvc整合redis架构搭建实例
    面试求职中你需要了解的Java面向对象
    整合Solr到Tomcat服务器,并配置IK分词
    formValidator输入验证、异步验证实例 + licenseImage验证码插件实例应用
    SpringMVC整合Mongodb开发,高级操作
    SpringMVC整合Mongodb开发 架构搭建
  • 原文地址:https://www.cnblogs.com/liweibing/p/12663516.html
Copyright © 2011-2022 走看看