深入理解JVM虚拟机
Posted toov5
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解JVM虚拟机相关的知识,希望对你有一定的参考价值。
- 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 对象了。
以上是关于深入理解JVM虚拟机的主要内容,如果未能解决你的问题,请参考以下文章