深入理解JVM虚拟机
时间:2019-10-02 09:24:27
收藏:0
阅读:74
- JVM平台上还可以运行其他语言,运行的是Class字节码。只要能翻译成Class的语言就OK了。挺强大的。
- JVM厂商很多
- 垃圾收集器、收集算法
- JVM检测工具
关于类的加载:
- Java代码中,类型(interface, class,enum等,有些是在运行时候生成的,比如动态代理)的加载、连接与初始化过程都是在程序运行期间完成的。不涉及到对象的概念。同时也是个Runtime阶段。
- 提供了更大的灵活性,增加了更多的可能性。提供了一些扩展,灵活扩展。
Java虚拟机与程序的生命周期:
在如下几种情况下,Java虚拟机将会结束生命周期:
- 执行了System.exit()方法
- 程序正常执行结束
- 程序执行过程遇到了异常或者错误异常终止了
- 操作系统出现错误导致Java虚拟机进行终止
类的加载、连接与初始化:
加载:查找并加载类的二进制数据
连接:
- 验证: 确保被加载类的正确性。Class有格式的。
- 准备:为类的静态变量分配内存,并将其初始化为默认值
-
注:
1.类的静态变量或类的静态方法,通常可以看做全局的,由类去直接调用。此时还是个类的概念,不存在对象。
2.关于默认值问题:
class Test{
public static int a = 1;
}
中间过程: Test类加载到内存的过程中,会给a分配一个内存。然后将a初始化为默认值0(整型变量) - 解析: 把类中的符号引用转为直接引用。符号的引用也是间接的引用方式。
初始化: 为类的静态变量赋予正确的初始值
-
class Test{ public static int a = 1; } 此时的a才真正成为1了
类的使用与卸载
使用: 类的方法变量使用等
卸载: class字节码文件,加载到内存里面。形成了自己的数据结构,驻留在内存里面。可以销毁掉。卸载到了就不能进行new 对象了。
原文:https://www.cnblogs.com/toov5/p/11616671.html
评论(0)