JVM知识点

来源:互联网 发布:师洋淘宝店截图 编辑:程序博客网 时间:2024/05/17 00:58

类的生命周期

      类的加载过程包括  加载、验证、准备、解析、初始化 五个阶段

类加载阶段

       1、通过一个类的全限定名来获取其定义的二进制字节流

       2、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构

       3、在java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口

JVM初始化步骤

      1、假如这个类还没有被加载和连接,则程序先加载并连接该类

       2、假如该类的父类还没有被初始化,则先初始化其直接父类

       3、假如类中有初始化语句,则系统依次执行这些初始化语句

JVM结束生命周期

       执行System.exit() 方法

       程序正常执行结束

       程序在执行过程中遇到异常或错误而异常终止

      由于操作系统出现错误而导致java虚拟机进程终止

类加载三种方式

      命令行启动应用时候由JVM初始化加载

      通过Class.forName()方法动态加载

      通过ClassLoader.loadClass()方法动态加载

      注意:Class.forName()将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块。ClassLoader.loadClass()只会把.class文件加载到jvm中。


GC算法

       标记-清除算法   效率较低,存在不连续空间

       复制算法           内存容量只能用一般

       标记-压缩算法      将存活的对象向一端移动

       分代收集算法

       

JVM内存

        堆内存:最大的一块内存,由年轻代和老年代组成

        方法区:存储类信息,常量,静态变量等数据

       栈  :虚拟机栈和本地栈,主要用于方法的执行

       程序计数器:当前线程所执行的字节码的信号指示器



0 0
原创粉丝点击