Hello World几乎是是每一门编程语言的第一个节课 现在到已然成为一种传统
JAVA把C和C++的复杂语法以及容易造成编程错误的指针手动释放内存等弊端给屏蔽了 C和C++是直接和操作系统直接交互 会造成忘记释放内存的错误 JAVA则依赖于JVM(Java Virtual Machine <Java虚拟机>)管理 JAVA通过JVM和操作系统打交道 出错JVM会报异常error 还有垃圾回收器等 能够自动帮你释放内存 还解决了跨平台问题
我们写好Hello World后 通过调用JDK的工具后 编译成了.class文件 此时会在内存中划分一段空间 创建一个JVM 通过类加载器校验class文件是否符合JVM的规范 JVM在对Java类解释执行
1 public class Hello{ 2 public static void main(String[] args){4 System.out.printf("Hello"); 5 } 6 }
Java类从被虚拟机加载开始 到卸载出内存为止 它的整个生命周期包括 加载(Loading) 验证(Verification) 准备(Preparation) 解析(Resolution) 初始化(Initialization) 使用(Using)和卸载(Unloading)7个阶段 其中验证 准备和解析又统称为连接(Linking)阶段
加载 将class文件加载到内存中
验证 两点 验证当前class文件的是否兼容当前JVM的版本 验证class文件是否符合JVM规范(JVM规定class的第一个字节码必须有一个十六进制的魔数值)
准备 将类成员初始化为初始值 final变量直接初始化为变量值
解析 将符号引用解析为直接引用(直接引用即为内存地址 如 0x000000001)
初始化 把定义的static变量或者static代码块按顺序组织成(clinit)构造器也成为类成员构造器来初始化变量
卸载 当该类的class对象不再被引用之后 该类的生命周期也就结束了 之后 该类会被类加载器卸载
原文:https://www.cnblogs.com/daomeidan/p/12490407.html