深入理解java虚拟机系列文章:类的加载、连接与初始化
来源:互联网 发布:算法注册机免费下载 编辑:程序博客网 时间:2024/06/05 02:33
类开始加载到运行要经过以下几个步骤:
加载:查找并加载类的二进制数据(加载到内存中)
连接
验证:确保被加载的类的正确性
准备:为类的静态变量分配内存,并将其初始化为默认值
解析:把类中的符号引用转换为直接引用
初始化:为类的静态变量赋予正确的初始值(用户赋予的值)
下面看一个例子:
package com.naxsu.jvm;class Singleton {//private static Singleton singleton=new Singleton();//放在前面,输出1和0public static int count1;public static int count2 = 0;private static Singleton singleton=new Singleton();//放在后面,输出1和1private Singleton() {count1++;count2++;}public static Singleton getInstance(){return singleton;}}public class MyTest {public static void main(String[] args) throws ClassNotFoundException {Singleton singleton= Singleton.getInstance();System.out.println(singleton.count1);System.out.println(singleton.count2);}}
我们来分析一下这个类的运行过程:
1. Singleton类的二进制数据被加载到内存中。
2. 验证类的正确性
3. 为count1,count2为配内存,为都赋予默认值0,singleton =null
4.
l 放在前面那种情况,singleton =new Singleton(),count1和count2都为1,然后给静态变量赋予正确的初始值,这里用户给count2初始化的值是0,所以最后输出是1和0
l 给静态变量赋予正确的初始值,这里用户给count2初始化的值是0,singleton =new Singleton(),count1和count2都为1,所以最后输出是1和1
转载请注明出处:http://bbs.naxsu.com/forum.php?mod=viewthread&tid=24
- 深入理解java虚拟机系列文章:类的加载、连接与初始化
- 《深入理解java虚拟机》:类的初始化
- 《深入理解Java虚拟机》:类加载和初始化(二)
- 深入理解JVM八---Java类的连接与初始化
- 深入理解 Java 虚拟机-类初始化
- Java虚拟机的加载、连接和初始化
- Java虚拟机的加载、连接和初始化
- 《深入理解Java虚拟机》——类加载的时机与过程
- 深入理解java虚拟机(七)类加载的时机
- 《深入理解Java虚拟机》:类加载的过程
- [深入理解Java虚拟机]第七章 类加载的时机
- [深入理解Java虚拟机]第七章 类加载的过程
- 深入理解java虚拟机【类加载机制】
- 深入理解java虚拟机---类加载器
- 【深入理解Java虚拟机】类加载机制
- 深入理解Java虚拟机--类加载器
- 深入理解Java虚拟机:类加载器
- java虚拟机类加载机制---《深入理解java虚拟机》读书笔记
- 创业笔记(七)
- datalist嵌套
- 虚拟继承入门
- linux目录结构
- 云计算实战:Amazon EC2之初体验
- 深入理解java虚拟机系列文章:类的加载、连接与初始化
- pureMVC理解
- java基础之选择排序
- java的深度克隆
- 使用tomcat 来搭建本地服务器 ,使用Android 客户端(真机)通过浏览器访问
- ref、out、in对比区别
- secureCRT简介
- ubuntu 安装字体
- #if 和#ifdef的区别