JVM详解
来源:互联网 发布:淘宝女童模特施欣怡 编辑:程序博客网 时间:2024/05/20 09:25
类加载器(classloader)==>根类加载器(c++实现),扩展加载器,系统(应用)加载器和自定义加载器
用户自定义加载器:继承自抽象类java.lang.Classloader,来定制自己的加载器
顾名思义,用于加载class字节码文件,作用是把字节码文件装载到内存中(硬盘到内存)。当执行代码的时候会有一个jvm的进程,有一个主线程执行,代码执行完毕后会结束当前的进程。有以下几种情况jvm结束:
1.程序正常结束
2.执行System.exit()方法
3.遇到了error或者exception而终止
4.操作系统出现错误
jvm加载执行的顺序:
类的加载==》连接====》初始化
加载:将类load到内存中。
连接:1.验证=》确保被加载类的正确性
2.准备=》为类的静态变量分配内存,并初始化为默认值(例:int型默认为0,引用默认的为null)
3.解析=》把类中的符号引用转化为直接引用
初始化:为静态的变量赋予正确的初始值(注意默认值与初始值的区别)
只有是类的主动使用(包括new,继承关系,静态的变量,静态的方法),首次使用才执行初始化工作。
package com.qq.server;public class Test{public static void main(String[] args){Singleton singleton = Singleton.getInstance();System.out.println("a=" + singleton.a);System.out.println("b=" + singleton.b);}}class Singleton{private static Singleton singleton = new Singleton(); // a=1,b=0public static int a;public static int b = 0;//private static Singleton singleton = new Singleton(); a=1,b=1;public static Singleton getInstance(){return singleton;}private Singleton(){a++;b++;}}
上面的代码执行的顺序即可反映静态语句的执行顺序。
类的主动使用:
1.创建累的实例(new)
2.访问某个类的静态变量(注:该静态变量必须要在当前类中,如果存在继承,则初始化静态变量所在的类)
3.调用类的静态方法
4.反射使用(Class.forName("java.lang.String"))
5.初始化一个类的子类
6.jvm被标明的启动类
- jvm详解
- JVM详解
- JVM详解
- JVM详解
- JVM详解
- JVM详解
- JVM详解
- JVM详解
- jvm详解
- JVM详解
- JVM详解
- jvm详解
- JVM详解
- JVM详解
- jvm详解
- JVM 详解
- jvm详解-jvm内存区域
- JVM(5) JVM 参数详解
- Sql Server的Pivot函数
- Spring jms 和 ActiveMQ 开发消息服务
- Java 文件上传组件 Apache Commons FileUpload 应用
- HTML5 标签列表
- ISP和IAP两种编程方式有何区别?
- JVM详解
- 从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
- 远程服务器返回错误: (404) 未找到
- Oracle高效率SQL分页,含Informix分页
- SQL Server 2012 Always On
- ubuntu使用问题记录
- Eclipse快捷键大全
- 招聘信息NO.5
- javascript小技巧(偷的别人的,只是想以后有用)