- 浏览: 7330780 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
package com.easyway.commons.ispace.dev.oop.classloaders;
/**
* 类的生命周期从类被加载,连接和初始化开始,到被卸载结束。只有当类处于生命周期中时,
* 程序才能使用这个类:如访问它的静态成员,创建它的实例。
* 加载过程负责把类的二进制数据读入到java虚拟机的方法区,并且在堆区内创建一个描述
* 这个类的class对象。连接过程负责验证类的二进制数据,为静态变量分配内存并且初始化
* 默认值,把字节码流中的符号引用替换为直接引用。初始化过程负责执行类的初始化语句,
* 为静态变量赋予初始值。
* 关于类的生命周期:
* java 虚拟机初始化一个类:
* (1) 如果这个类没被加载和连接,那就进行加载和连接。
* (2) 如果累存在直接的父类,并且这个父类还没有被初始化,那就先初始化直接的父类。
* (3) 如果类存在初始化语句,那就一次执行这些初始化语句。
* 备注:如果这个类的父类,有相关的父类,也执行上面的步骤。
* @author longgangbai
* @date 2010-5-7
* @version 1.0
* @since JDK6.0
*/
class Base{
static int a=1;
static{
System.out.println("init base static ");
}
}
class Sub extends Base{
static int b=1;
static{
System.out.println("init Sub static");
}
}
public class ClassLifeLine {
/**
* 静态变量的初始化:
* (1)在静态变量的声明处进行初始化
* (2)在静态代码块中进行初始化
*/
private static final int a=1;
private static final int b=(4*10)/10;
private static final long c;
private static long d; //静态变量没有显示初始化,它将保持默认值0
public ClassLifeLine(){
System.out.println("类的构造中》...");
}
/**
* 静态变量的声明语句,以及静态代码块都被看作类的初始化语句。
* java 虚拟机会按照初始化语句在类文件中的先后顺序依次执行他们。
*/
static{
c=3;
System.out.println(" ClassLifeLine ,这是一个static 的语句块");
}
/**
* main 方法执行过程如下:
* java 虚拟机首先初始化启动ClassLifeLine ,
* 然后执行它的main方法,当访问Sub.b 时,先依次初始化Base 类和 Sub类
*
* @param args
*/
public static void main(String[] args) {
//=======================仅仅执行下面代码结果如下:==========================//
//=======================ClassLifeLine ,这是一个static 的语句块============//
//======================= init base static ============================//
//======================= init Sub static==============================//
//=======================Sub.b = 1 =====================================//
//=======================ClassLifeLine d =0 ============================//
//=======================ClassLifeLine b =3=============================//
//=======================ClassLifeLine b =4=============================//
/*
System.out.println("Sub.b = "+Sub.b);
System.out.println(" ClassLifeLine d ="+d);
System.out.println(" ClassLifeLine c ="+c);
System.out.println(" ClassLifeLine b ="+b);*/
/**
* 单独执行如下代码打印结果如下::
* after defining base 说明:仅仅声明是不会初始化
* init base static 说明:在初始化时开始加载初始化语句(静态语句块,静态声明语句)
* after create an object of base
* a =1
* init Sub static 说明:在父类存在的情况下,如果父类没有加载连接,那么加载连接。
* b = 1
*
*/
Base base;
System.out.println("after defining base ");
base=new Base();
System.out.println("after create an object of base ");
System.out.println("a ="+base.a);
System.out.println(" b = "+Sub.b);
}
}
发表评论
-
java中 避免过多的使用同步
2012-11-22 15:41 2247避免过多的使用同步 ... -
Java Thread的一点知识(III)
2011-10-28 15:32 3350同步和异步有何异同,阻塞与非阻塞,在什么情况下分别使用他们?举 ... -
Java Thread的一点知识(II)
2011-10-28 15:30 5412stop() 和 suspend() 方法为何不推荐使用? ... -
Java Thread的一点知识
2011-10-28 15:24 3702线程与进程的区别 线程和进程是不同的,每个进程 ... -
【转】Java内部类
2011-10-28 13:18 1554简单的说,内部(inner)类指那些类定义代码被置于其它类定义 ... -
【转】华为的JAVA面试题
2011-10-28 09:20 2359对我个人来说,看看 ... -
Java String 在JVM中的思考
2011-10-26 16:49 2260package com; /** * @author ... -
java Final的复习
2011-10-24 16:54 1585package com; /** *如果fina ... -
【转】 不用中间变量,实现两个变量的交换
2010-11-27 17:30 2873常见的面试题,很简单,但值得细想的问题还是很多,总结解法如下: ... -
对象池技术基本原理和分析应用(二)
2010-07-02 21:27 1958通用对象池的实现 对象池的构造和管理可以按照多种方式 ... -
对象池技术基本原理和分析应用(一)
2010-07-02 21:25 2043本文在分析对象池技 ... -
java回调机制的使用
2010-06-03 17:09 1953学习过Hibernate和Spring等童鞋,经常见到的 ... -
java 数组知道少?
2010-05-19 17:45 2359package com.easyway.common ... -
面向对象程序设计(OOP)的六大原则
2010-05-15 20:54 3054面向对象程序设计(OOP) ... -
Java 实例内部类的学习
2010-05-15 20:47 1756package com.easyway.commons.isp ... -
Java 匿名类的学习应用
2010-05-15 20:39 2066java 接口的匿名内部类 package com.ea ... -
java 异常的特殊的典型使用你知道吗?
2010-05-15 20:36 1590package com.easyway.commons.isp ... -
java 字符串类型知道少
2010-05-15 20:33 1770package com.easyway.commons.isp ... -
枚举类的使用特点总结
2010-05-11 09:20 2359package com.easyway.commons.isp ... -
关于Integer的深度分析以及注意点
2010-05-10 22:20 2101在Integer中valueOf()和创建独享In ...
相关推荐
在深入了解Java中类的生命周期之前,我们首先需要了解Java虚拟机(JVM)及其生命周期的概念。 **1. Java虚拟机启动** 当我们通过`java`命令运行一个Java程序时,会启动一个Java虚拟机进程。这个进程从启动到终止的...
在深入讨论Java类的生命周期之前,有必要先了解Java虚拟机中的一些重要内存区域,它们在整个生命周期中扮演着至关重要的角色。 - **方法区**:这是JVM中专门用于存储已加载类的信息、常量、静态变量及方法代码的...
理解类的生命周期对于深入掌握Java内存管理和程序运行机制至关重要。 #### 二、Java虚拟机及程序的生命周期 当通过`java`命令运行Java程序时,会启动一个Java虚拟机进程。这个进程从启动到终止的整个过程被称为...
【深入Java虚拟机(三)——类的生命周期(下)类的初始化1】 类的生命周期在Java中是一个关键的概念,它涵盖了从加载到卸载的整个过程。在类的生命周期中,初始化阶段是非常重要的,因为它涉及到类的静态变量的赋值...
了解类的生命周期对于优化Java应用性能、理解和解决类加载问题至关重要。例如,理解类加载机制可以帮助开发者避免类冲突,设计更高效的类加载策略,以及处理动态加载和热部署等问题。因此,深入理解JVM的工作原理,...
理解Java类的生命周期对于深入掌握Java编程语言至关重要。从加载、连接到初始化、使用再到最终卸载,每个阶段都有其特定的任务和目的。通过深入了解这些阶段,开发者可以更好地管理内存资源,提高程序性能。此外,...
第二部分是7-13章,对JVM、Java源代码和字节代码操作、类加载器、对象生命周期、多线程、并发编程、泛型、安全等Java平台的核心技术进行了深入解析,掌握这部分内容有助于深入理解Java的底层原理;第三部分为第14章...
Java对象生命周期管理是Java开发中不可或缺的一个重要环节。在Java编程中,对象的创建、使用和销毁是由垃圾收集器自动管理的。理解这一过程对于优化应用程序性能至关重要,因为不恰当的对象管理可能导致内存泄漏,...
在这个过程中,理解JVM(Java虚拟机)的角色至关重要,因为它是对象生命周期的主要管理者。 首先,让我们了解一下JVM的结构。JVM是Java虚拟机的缩写,它的主要任务是执行符合Java字节码规范的.class文件。JRE(Java...
### Servlet 生命周期详解 #### 一、概述 ...综上所述,Servlet 的生命周期是理解 Java Web 开发的重要组成部分。通过对各个阶段的理解,开发者可以更好地控制 Servlet 的行为,从而提高应用的性能和可靠性。
作者以易于理解的方式深入揭示了java虚拟机的内部工作原理,深入理解这些内容,将对读者更快速地编写更高效的程序大有裨益! 本书共分20章,第1-4章解释了java虚拟机的体系结构,包括java栈、堆、方法区、执行...
本篇文章将深入探讨JVM的生命周期、体系结构、类加载机制、内存区域以及垃圾收集。 首先,JVM的生命周期与Java程序紧密关联。每当运行一个Java程序时,就会创建一个JVM实例。这个实例在程序执行期间存在,直到程序...
首先,类的生命周期包括加载、验证、准备、解析和初始化五个阶段。加载阶段,JVM通过全限定类名获取二进制字节流,将其转换为方法区的运行时数据结构,并创建一个代表该类的Class对象。验证阶段则确保字节流符合JVM...
书中讲解了类加载器的工作流程,包括加载、验证、准备、解析和初始化等阶段,以及双亲委托模型,有助于理解类的生命周期和类加载异常。 5. **字节码与指令集**:Java源代码经过编译后生成字节码,这些字节码在JVM...
- 内存优化:合理设置堆大小,避免内存溢出,理解对象生命周期。 - GC优化:选择合适的垃圾收集器组合,调整GC参数以降低暂停时间。 - JIT编译器:即时编译优化热点代码,提升执行效率。 7. **JVM调优工具** ...
- **Servlet**:学习Servlet的生命周期,处理HTTP请求和响应。 - **JSP**:使用JSP动态生成HTML页面,理解EL和JSTL。 以上就是“Java从入门到深入”课程的主要内容,覆盖了Java语言的基础到高级特性,还包括了...
Java中的类与对象的生命周期是理解Java运行机制的关键部分,涉及到类加载、连接、初始化、使用和卸载等环节。让我们深入探讨这些概念。 首先,类的生命周期始于.java源文件被编译成.class字节码文件。Java虚拟机...
Maven是Java开发中广泛使用的项目管理和综合工具,它通过定义一套标准的生命周期和构建过程,简化了项目的构建、依赖管理以及文档生成等工作。在Maven的世界里,理解生命周期和插件的概念是至关重要的。 ### 1. ...