- 浏览: 248879 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (159)
- java (38)
- extjs (6)
- jquery (3)
- struts2 (0)
- hibernate (3)
- spring (1)
- flex (1)
- css (2)
- js (3)
- html (4)
- android (4)
- linux (9)
- swing (0)
- java E-mail (0)
- 心情故事 (11)
- mysql (4)
- jbpm (7)
- 我的搜索之路 (2)
- MyBatis (3)
- 玩转svn (3)
- 生活无处不美 (0)
- 工具 (4)
- 数据统计与分析 (1)
- quartz (1)
- webservices (2)
- jboss (1)
- php (1)
- hadoop (3)
- maven (5)
- Discuz! (1)
- windows (1)
- 站长之家 (1)
- OSGi (1)
- 软件测试 (2)
- redis (4)
- git (5)
- MongoDB (4)
- lucene (3)
- freemarker (5)
- html5 (4)
- itext (1)
- nginx (1)
最新评论
-
kiansoung:
在Slave机器需不需开SecondaryNameNode程序 ...
快速了解Hadoop架构 -
忧郁的小老虎:
openjdk和jdk的区别与联系 -
TheMatrix:
...
MyBatis入门实例 -
lishl:
非常感谢分享。详细,务实。赞一个。
Lucene学习笔记【2013-04-10更新】 -
派尔人事:
关于JPA一对一关系的删除问题,有请大家帮忙,感激不尽
类开始加载到运行要经过以下几个步骤:
加载:查找并加载类的二进制数据(加载到内存中)
连接
验证:确保被加载的类的正确性
准备:为类的静态变量分配内存,并将其初始化为默认值
解析:把类中的符号引用转换为直接引用
初始化:为类的静态变量赋予正确的初始值(用户赋予的值)
下面看一个例子:
我们来分析一下这个类的运行过程:
1. Singleton类的二进制数据被加载到内存中。
2. 验证类的正确性
3. 为count1,count2为配内存,为都赋予默认值0,singleton =null
4.
放在前面那种情况,singleton =new Singleton(),count1和count2都为1,然后给静态变量赋予正确的初始值,这里用户给count2初始化的值是0,所以最后输出是1和0
给静态变量赋予正确的初始值,这里用户给count2初始化的值是0,singleton =new Singleton(),count1和count2都为1,所以最后输出是1和1
转载请注明出处:http://bbs.naxsu.com/forum.php?mod=viewthread&tid=24
加载:查找并加载类的二进制数据(加载到内存中)
连接
验证:确保被加载的类的正确性
准备:为类的静态变量分配内存,并将其初始化为默认值
解析:把类中的符号引用转换为直接引用
初始化:为类的静态变量赋予正确的初始值(用户赋予的值)
下面看一个例子:
package com.naxsu.jvm; class Singleton { // private static Singleton singleton=new Singleton();//放在前面,输出1和0 public static int count1; public static int count2 = 0; private static Singleton singleton=new Singleton();//放在后面,输出1和1 private 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.
放在前面那种情况,singleton =new Singleton(),count1和count2都为1,然后给静态变量赋予正确的初始值,这里用户给count2初始化的值是0,所以最后输出是1和0
给静态变量赋予正确的初始值,这里用户给count2初始化的值是0,singleton =new Singleton(),count1和count2都为1,所以最后输出是1和1
转载请注明出处:http://bbs.naxsu.com/forum.php?mod=viewthread&tid=24
发表评论
-
JAVA在线视频教程之基础教程(更新完)
2013-06-03 22:54 39JAVA基础教程(更新完) 孔浩老师JAVA基 ... -
使用jcrop+springmvc实现头像上传与裁剪
2013-05-24 09:15 36使用jcrop+springmvc实现头像上传与裁剪功能 ... -
根据文章内容获取摘要的解决方案
2013-03-26 22:23 1167如果有一篇文章,根据文章内容提取出一个简短的摘要,有哪些实现方 ... -
Spring与工厂模式
2013-03-26 16:37 19711. 前言 我相信很多在刚刚使用Sprin ... -
登录成功后不刷新页面,在页面怎样获取登录用户的信息
2013-03-11 22:50 1670用ajax登录,登录成功后不刷新页面,在页面怎样获取 ... -
面试老碰壁,是不是由于基础不够牢固
2013-03-08 14:05 1842最近面试老碰壁,虽然有一定的开发经验,但问的问题虽然比较基础 ... -
这样的面试题,你能回答几个
2013-02-28 10:52 13661 ,了解hbase么,为什么存储速度快? 2理解sprin ... -
获取文章中的图片
2013-01-30 09:48 1136瀑布流的功能开发完了,感觉还不错,地址是:http:/ ... -
java cms 在线安装原理及详细步骤
2013-01-26 13:16 1130java cms 在线安装原理及详细步骤,详细代码请 ... -
java反射详解(一)_Class类
2012-11-17 09:24 689Class类 Java类用于描述一类事物的共性, ... -
领悟书生写论坛之类图设计
2012-09-20 00:37 1046大家好,今晚设计了BBS的类图,和大家分享一下。其实也比较简单 ... -
获取web根目录下的文件与类路径下的文件的方法
2012-08-06 21:41 11301.获取web项目根目录下的文件 读取web项目根目录下的某 ... -
JasperReports结合iReport制作报表-使用JasperReports生成报表
2012-06-11 22:54 1700《JasperReports结合iReport制作报表-使用i ... -
JasperReports结合iReport制作报表-使用iReport设计报表
2012-06-11 13:56 2523下载 iReport iReport ... -
学习笔记系统文章(提供PDF下载,2012-06-08 23:27更新)
2012-06-08 13:23 20992012-06-11 JasperReports结合i ... -
Java日期操作总汇
2012-06-06 08:35 830字符串转为Date对象 public sta ... -
ubuntu学习笔记2
2012-06-01 22:37 1125安装jdk <!--[if !support ... -
尚学堂科技_张志宇_SERVLET_JSP_视频教程下载地址(每集分开下载)
2012-05-27 23:49 1071由于师弟在学校的流量有限,下载也不方便,他委托我帮 ... -
移动用户资费统计系统学习笔记续一(下载附件更易阅读)
2012-05-26 23:04 791接着上一节的需求,我们再来整理一下费用明细,因为我看了好几次才 ... -
移动用户资费统计系统学习笔记
2012-05-26 08:46 814前天学习了移动用户资 ...
相关推荐
书中讲解了类加载器的工作流程,包括加载、验证、准备、解析和初始化等阶段,以及双亲委托模型,有助于理解类的生命周期和类加载异常。 5. **字节码与指令集**:Java源代码经过编译后生成字节码,这些字节码在JVM...
《深入理解Java虚拟机(第二版)》还详细讨论了JVM的其他重要主题,如异常处理、反射、类加载器自定义、线程与同步、JVM调优工具的使用等。通过阅读本书,读者不仅可以深化对Java技术的理解,还能提升解决问题的能力...
加载、验证、准备、解析和初始化这五个阶段构成了完整的类加载过程。其中,验证确保字节码的安全性,准备为类变量分配内存并设置初始值,解析则将符号引用转换为直接引用。 2. **内存模型**:JVM内存分为堆、栈、...
Java虚拟机(JVM)的类装载机制是Java运行时环境的核心组成部分,它负责将类文件中的字节码加载到JVM中,使类成为JVM的一部分。类装载过程不仅涉及基本的类查找和导入,还包含了链接、验证、准备、解析和初始化等多...
《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的著作,涵盖了JVM性能调优、内存模型以及虚拟机原理等多个关键领域。本文将基于这些主题,详细阐述其中的重要知识点。 首先,我们要了解Java虚拟机(JVM)...
类加载机制是JVM的重要特性,它包括加载、验证、准备、解析和初始化五个阶段。这个过程确保了类的安全性和正确性。双亲委派模型是类加载机制的一种实现,它避免了类的重复加载,并保证了类加载的有序性。 垃圾收集...
### 深入Java虚拟机加载初始化 #### Classloader的作用及意义 在深入了解Java虚拟机(JVM)的加载初始化之前,我们先明确一下`Classloader`的角色。简单地说,`Classloader`的主要职责是将编译后的`.class`文件...
Java虚拟机JVM类加载初始化是Java程序运行过程中的关键环节,它负责将类的字节码文件加载到内存中并进行相应的处理,以便程序能够正确执行。在Java中,类加载器(Classloader)扮演着核心角色。下面将详细讨论类加载...
总的来说,理解Java虚拟机的类装载机制对于深入掌握Java应用程序的运行机制至关重要。通过自定义ClassLoader,开发者可以实现更为复杂的应用架构,如插件系统、动态代码更新等,极大地提升了Java应用程序的可扩展性...
第三步,内存空间初始化;第四步,必要的设置。对象的内存布局在 HotSpot 虚拟机中,对象在内存中存储的布局分为三块:对象头、实例数据和对齐填充。对象头包括两部分信息, 一部分用于存储对象自身的运行时数据,如...
这本书是Java开发者必备的经典读物,它详细地解析了Java虚拟机(JVM)的工作原理,帮助读者深入理解Java程序的运行机制。尽管描述中提到内容为图片形式,但我们可以从其主题和标签中提炼出许多关于JVM的重要知识点。...
### 学习深入理解Java虚拟机的前几章笔记 #### JVM内存模型 Java虚拟机(JVM)的内存模型主要分为两大类:线程共享区和线程私有区。 ##### 线程共享区 - **堆**:是所有线程共享的内存区域,在这里存放着对象实例...
《Java核心技术系列:Java虚拟机规范(Java SE 8版)》完整而准确地阐释了Java虚拟机各方面的细节,围绕Java虚拟机整体架构、编译器、class文件格式、加载、链接与初始化、指令集等核心主题对Java虚拟机进行全面而...
本文将深入探讨Java虚拟机中的类初始化以及加载器的父委托机制。 一、类的加载 类加载是JVM启动时或运行中根据需要动态加载类到内存中的过程。这个过程分为三个阶段:加载、链接和初始化。 1. 加载:JVM通过类...
深入理解 Java 虚拟机笔记 Java 虚拟机(JVM)是 Java 语言的运行环境,它负责解释和执行 Java 字节码。下面是 Java 虚拟机相关的知识点: 虚拟机内存结构 Java 虚拟机的内存结构主要包括以下几个部分: * 方法...
### 深入Java虚拟机最新版:执行引擎与类加载机制详解 #### 执行引擎:一次探索之旅 Java虚拟机(JVM)的核心组件之一就是执行引擎,它负责将字节码转换为机器指令执行。在《深入Java虚拟机最新版》这本书中,我们...
Java虚拟机(JVM)的类加载过程是Java程序运行的基础,它涉及到类加载器、类的生命周期和一系列复杂的步骤。在这个过程中,类加载器主要任务是根据类的全限定名加载二进制字节流并转化为`java.lang.Class`对象。整个...
本篇文章将深入探讨JVM的生命周期、体系结构、类加载机制、内存区域以及垃圾收集。 首先,JVM的生命周期与Java程序紧密关联。每当运行一个Java程序时,就会创建一个JVM实例。这个实例在程序执行期间存在,直到程序...
根据提供的文件标题、描述、标签以及部分内容,我们可以深入探讨与Java虚拟机(JVM)相关的多个核心知识点。以下是对这些主题的详细阐述: ### Java虚拟机(JVM)概述 Java虚拟机(JVM)是一种用于执行Java字节码的...