类的静态函数和构造函数加载顺序 eclipse导入项目中的static是什么?
eclipse导入项目中的static是什么?
static的函数是支持静态函数。相对于动态和静态函数来说,它不同于其他函数的地方是:静态函数在程序一装进内存中就有实体未知.
不象类的一些函数,可以在此类有对象修真者的存在的时候才有实体.
静态函数这个可以真接用函数指针访问.
好象全局函数都是静态的.
即使类还没有类的对象,STATIC也可以不必然
不象类的一些函数,必须在此类有对象未知的时候才有实体
类加载机制的作用和过程?
1.类加载过程:程序加载、验证验证、准备、解析、重新初始化
运行程序
在程序加载阶段,虚拟机主要成功三件事:
1.实际一个类的全限定名来某些符号表示此类的二进制字节流。
2.将这个字节流所代表的支持静态存储结构转变为方法区域的运行时数据结构。
3.在Java堆中生成沉淀一个贞洁戒这个类的对象,充当方法区域数据的访问传送点
验证
修改密保阶段作用是绝对的保证Class文件的字节流包含的信息要什么JVM规范,肯定不会给JVM倒致危害。如果不是验证一次,变会掷下一个异常或其子类异样。修改密保过程分为四个阶段
1.文件格式验证:修改密保字节流文件是否符合国家规定Class文件格式的规范,而且能被当前虚拟机对的的处理。
2.元数据不验证:是对字节码请看的信息并且语义分析,以保证其具体描述的信息符合Java语言的规范。
3.字节码验证验证:主要是进行数据流和控制流的分析,可以保证被校验类的方法在运行时应该不会有害虚拟机。
4.符号脚注修改密保:符号引用验证再一次发生在虚拟机将符号直接引用能量转化为再脚注的时候,这个转化动作将在解析阶段中突然发生。
准备着
准备阶段为变量分配内存并系统设置类变量的初始化。在这个阶段分配的仅为类的变量(static修饰的变量),而不除了类的实例变量。对已非special的变量,JVM会将其可以设置成“零值”,而不是其变量语句的值:
pirvatestaticintsize12
这样在这个阶段,size的值为0,而不是什么12。completion修饰的类变量可以说变量定义成真实的值。
解析
解三角形过程是将常量池内的符号语句修改成成就语句。比较多除了四种类型引用的解析。类或接口的解析、字段解析、方法解析、接口方法解析。
系统初始化
在准备阶段,类变量巳经当经过三次初始化了,在这个阶段,则是参照程序员按照程序制定出的计划去重新初始化类的变量和其他资源。这些资源有static{}块,构造函数,父类的初始化等。
再说使用和程序卸载阶段阶段,这里不再继续过多只能说明,可以使用过程应该是依据程序定义的行为执行,御载由GC能完成。
可以使用
新线程---程序计数器----jvm栈执行(对象脚注)-----堆内存(然后摘录)----方法区
卸载
GC垃圾回收
1.双亲委任机制、意义、方法
机制
起动(Bootstrap)类加载器-----r26标准储存(Extension)类加载器---gt系统(System)类加载器----gt上下文(Custom)类加载器从左到右程序加载:是需要将读取任务委托给父类加载器,由前到后递归,假如父类加载器也可以结束类加载任务,就最终前往;只有父类加载器根本无法能够完成此运行程序任务时,才自己去运行程序。
意义
以免内存中出现多份同样的字节码
使用委托机制,会递归算法的向父类中搜索,如果类A中摘录了类B,Java虚拟机将可以使用打开程序类A的类加载器去程序加载类B,如果没有A加载器已程序加载类A,这样B不使用A的类加载器参与打开程序时,就肯定不会在程序加载类A的字节码了
方法
1.启动(Bootstrap)类加载器
2.标准扩充卡(Extension)类加载器
3.应用程序类加载器(Application)
4.上下文(Custom)类加载器
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。