java编译运行原理
来源:互联网 发布:arttemlate渲染数据 编辑:程序博客网 时间:2024/04/30 14:54
①.java文件被javac.exe编译成与体系结构无关的.class字节码文件
②java.exe将.class文件加载到JVM中运行
③将.class文件中类的静态变量和方法信息放入方法区中
④在堆区中创建java.lang.Class对象,该类持有方法区类型信息的引用
⑤为类的静态变量分配内存及初始化,初始化的时机包括:
(1)创建类的实例,包括new、反射、克隆、反序列化
(2)调用类定义的静态方法
(3)访问某个类的或接口定义的静态常量或赋值(final修饰的编译时静态常量例外)
(4)初始化一个类的子类会先初始化父类,但接口不会
(5)调用API中的反射方法
⑥在堆区中创建类的实例(实例的引用变量持有堆区实例的引用,如果是静态变量则存放在方法区,如果是局部变量则存放在栈区,如果是实例变量则存放在堆区),为实例分配内存,初始化实例变量为其变量的默认值,如果实例变量在声明时被显示初始化则将初始化值赋值给实例变量,调用构造方法(克隆和反序列化方法没有此步),返回对象引用
⑦当程序不需要某个实例时结束对象的生命周期,JVM的垃圾回收器自动回收内存
0 0
- java编译运行原理
- C# 编译&运行原理
- Java一处编译到处运行的简单原理
- Java 运行时动态编译源代码原理和实现
- C# 编译&运行原理二
- Android编译和运行原理
- “一次编译,到处运行”原理
- Java 运行原理
- Java的运行原理
- Java 运行原理
- Java的运行原理
- Java的运行原理
- JAVA运行原理
- Java运行原理解释
- Java的运行原理
- Java的运行原理
- Java的运行原理
- java的运行原理
- Android-Spinner下拉列表显示
- LIB_SVM C/C++之codeblocks调用
- static块与finalize()
- Hive distribute 问题
- Volley源码解析(二)
- java编译运行原理
- HDU 1872 稳定排序
- 监视远程线程的创建
- 非相干解禅--物本多面
- iOS 如何把view转成image,截屏分享/ 整个视图的分享。
- 配置openfire相关设置(IOS)
- 小Po记录
- Mactype与VirtualBox的兼容性问题
- 树莓派搭建Openvpn(二)使用UserPass方式登录