5.23

一.JRE和JDK
JRE(Java Runtime Environment)是java运行环境,包含了JVM,类加载器,字节码校验器以及大量的基础类库等其他环境。

JDK是开发环境,包含了JRE。

二.JVM-java跨平台机制的关键
1.javac将.java文件编译为.class字节码文件
2.JVM(java虚拟机)解释并执行.class文件就会生成对应操作系统平台的机器码。
基于这种机制,实现了java跨平台。

三.java堆和垃圾回收机制
java的堆内存保存类的实例(对象),java虚拟机的堆内存中存放着正在运行的应用程序所建立的所有对象,垃圾回收机制会自动回收不再被程序引用的对象,一般都是在CPU空闲或内存不足的时候自动进行垃圾回收,程序员时无法精确控制垃圾回收的时间和顺序。

四.JVM将java类加载过程分为五个阶段:

1.装载
(1)通过类的全限定名获取这个类的二进制字节流
(2)将字节流所代表的静态存储结构转化为方法区运行时数据结构
(3)在java堆中生成一个代表该类的java.lang.Class对象,这个对象将作为方法区访问数据的入口。
注意如果一个类装载器在预先装载的时遇到缺失或错误的class文件,它需要等到程序首次主动使用该类时才报告错误

2.连接
(1)验证:验证被加载的类的正确性,确认类符合Java语言的语义,检查各个类之间的二进制兼容性(比如final的类不能拥有子类等),另外还需要进行符号引用的验证。
(2)准备:为静态变量分配内存空间,并赋予一个默认值
(3)解析:把类的常量池中的类,接口,字段和方法等的符号引用转换为直接引用

3.初始化
(1)一个类被初始化的触发事件(常见的):
①创建一个类的实例时
②初始化一个类的子类时,先初始化这个类
③对一个类中的静态变量读取和写入时,调用一个类中的静态方法时
④使用反射方式来强制创建某个类或接口对应的java.lang.Class对象时
⑤直接使用java命令来运行一个主类时

4.使用

5.卸载

五.java元素初始化顺序

普通类:
静态变量
静态代码块
普通变量
普通代码块
构造函数
普通方法

继承的子类:
父类静态变量
父类静态代码块
子类静态变量
子类静态代码块
父类普通变量
父类普通代码块
父类构造函数
父类普通方法
子类普通变量
子类普通代码块
子类构造函数
子类普通方法

抽象的实现子类: 接口 - 抽线类 - 实现类
接口静态变量
抽象类静态变量
抽象类静态代码块
实现类静态变量
实现类静态代码块
抽象类普通变量
抽象类普通代码块
抽象类构造函数
实现类普通变量
实现类普通代码块
实现类构造函数

全部评论

相关推荐

12-19 20:28
已编辑
门头沟学院 Java
美团履约 全栈工程师 (n+1)*15.5 其他
点赞 评论 收藏
分享
12-18 22:04
已编辑
杭州电子科技大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务