深入研究Java虚拟机的类加载机制
说到Java虚拟机的类加载机制,很多朋友第一反应想到的应该就是ClassLoader,我也如此,不过ClassLoader其实只是Java虚拟机加载机制中的一部分,最近在看《深入理解Java虚拟机》,对Java虚拟机的类加载机制有了更深入的了解,不吐不快。
JVM中类的整个生命周期如下:
...
文章
寒凝雪
2017-07-03
1445浏览量
Java类加载及创建实例(new)顺序
Java类加载
1.JVM( Java Virtual Machine,“Java虚拟机” )的类装载器ClassLoader(java类),包括系统类、扩展类、用户编写三种类加载器,负责将java的字节码文件从硬盘读取到JVM中(内存),即首次加载java类时,类的静态成员开辟空间,将常量池存放...
文章
tony~tian
2015-04-13
1579浏览量
C++和Java中的静态Static用法
C++和Java中都有的一个静态关键字Static,可以放在类中的变量或者函数之前,就成了静态变量或者静态函数。
静态变量又分为静态全局变量和静态局部变量,可参见网上大神总结的C++全局变量,局部变量,静态全局变量,静态局部变量的区别。在类中的静态变量在定义时需要用类名引导,对其访问时,使用类名或...
文章
李博 bluemind
2017-12-01
909浏览量
Java和Android ClassLoder对比以及Class加载过程
Java的ClassLoder的父子关系如下:Bootstrap--ExtClassClassLoader---AppClassLoader。
JVM启动时先运行启动类加载器Bottstrap,主要加载Java核心API;然后加载扩展类加载器ExtClassLoder,该加载器加载rt.jar中的...
文章
jasmine_ben
2018-05-23
846浏览量
Java中枚举的线程安全性及序列化问题
--枚举是如何保证线程安全的
要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关键字,他并不是一个类,那么枚举是由什么类维护的呢,我们简单的写一个枚举:
然后我们使用反编译,看看这段代码到底是怎么实现的,反编...
文章
java填坑路
2018-08-05
1238浏览量
简述Java类的“初始化”
Java虚拟机规范规定了有且只有5种情况必须立即对类进行初始化:
1. 使用new关键字实例化对象的时候、读取或设置一个类的静态字段(被final修饰、已在编译器吧结果放入常量池的静态字段除外)的时候,以及调用一个类的静态方法的时候。2. 使用java.lang.reflect包的方法对类进行反射...
文章
飞翔的兔兔
2017-08-16
679浏览量
Java虚拟机类加载机制
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。
1.类的生命周期
类生命周期
从图中可以看到,类的生命周期共有7个阶段:加载->验证->准备->解析->...
文章
云之崖
2017-11-21
598浏览量
《Java 7程序设计入门经典》一2.4 深入解析变量
2.4 深入解析变量
第1章介绍了变量。现在,我们来更详细地考查它们。如前所述,变量可以用以下形式声明:
type var-name;
其中type变量的数据类型,var-name是变量名。可以声明任意有效类型的变量,包括之前描述的所有基本类型。在声明变量时,创建这种类型的一个实例。于是,变量的...
文章
华章计算机
2017-08-01
759浏览量
深入理解 Java 中的 final 关键字
final 是 Java 中重要关键字之一,可以应用于类、方法以及变量上。这篇文章中将讲解什么是 final 关键字?将变量、方法和类声明为 final 代表了什么?使用 final 的好处是什么?
final 关键字是什么?
final 在 Java 中是一个保留的关键字,可以声明成员变量、方法...
文章
武培轩
2019-10-30
541浏览量
JVM类加载过程
JVM:加载、链接和初始化 JVM要解释Java字节码,就必须对所需的类和接口执行如下3步操作: (1) 加载:JVM在加载类时,会查找该类或该接口的二进制表示,并根据找到的二进制表示(通常是由Java编译器创建的类文件)创建一个Class对象。该Class对象中封装了类或接口的运行时状态。 由类...
文章
ghost丶桃子
2016-05-19
2610浏览量
java类的初始化和对象的创建顺序
学习java编程思想--类的初始化p146
类的加载顺序* 1加载器启动找到 xxx.class文件,通过extends关键字寻找基类,先加载基类* 2类初始化先初始化static成员变量和static--->* 2先初始化父类的static成员变量和static* 3再初始化本类的sta...
文章
ryan-miao
2015-12-08
376浏览量
JAVA基础之对象的初始化
本文主要记录JAVA中对象的初始化过程,包括实例变量的初始化和类变量的初始化以及 final 关键字对初始化的影响。另外,还讨论了由于继承原因,探讨了引用变量的编译时类型和运行时类型
一,实例变量的初始化
一共有三种方式对实例变量进行初始化:
①定义实例变量时指定初始值
②非静态初始化块中对实...
文章
技术mix呢
2017-11-15
884浏览量
Java transient关键字使用小记
3. transient使用细节——被transient关键字修饰的变量真的不能被序列化吗?
思考下面的例子:
import java.io.Externalizable;
import java.io.File;
import java.io.FileInputStream;
impor...
文章
青衫无名
2017-07-03
1158浏览量
(四)java程序基本组成
一个基本的java程序一般包括几个部分,分别是程序所在的包名、程序中用到的其他包的路径、程序的类、类中的方法、变量和字面量。
package demo;
import java.util.Date;
public class Demo {public static void main(Str...
文章
涂宗勋
2015-03-12
983浏览量
深入java面向对象二:final关键字
文章内容源于对《疯狂java讲义》及《疯狂Java:突破程序员基本功的16课》学习和总结。
一、 final成员变量
final 修饰变量时,表示该变量一旦获取了值就不可以改变了。
但是我们知道,当一个类被加载,或者是实例化对象时,系统会为类成员赋初始值,所以,final关键字修饰的成员变量,必...
文章
无名公子
2014-09-16
998浏览量
Java虚拟机类加载机制
看到这个题目,很多人会觉得我写我的java代码,至于类,JVM爱怎么加载就怎么加载,博主有很长一段时间也是这么认为的。随着编程经验的日积月累,越来越感觉到了解虚拟机相关要领的重要性。闲话不多说,老规矩,先来一段代码吊吊胃口。
public class SSClass{
运行结果:
SSClassS...
文章
茶花盛开
2017-04-19
1739浏览量
第5章(3) 初始化
所有成员都要初始化:
1. Java尽力保证所有变量都能在使用前得到正确的初始化。若被定义成相对于一个方法的“局部”变量,这一保证就通过编译期的出错提示表现出来。
2. 基本类型的情况这是不同的,一个类的所有基本类型的数据成员都会保证获得一个初始值。即使作为局部变量,也是如此。
3. 类中定义一个...
文章
张晓灿
2015-11-26
857浏览量
虚拟机类加载机制
类加载的过程
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段...
文章
彦帧要努力
2018-07-08
821浏览量
Java虚拟机类加载机制浅谈
Java语言是一种编译后再经过解释器执行的过程, 解释器主要就是如何处理解释Class文件的二进制字节流。JVM主要包含三大核心部分:运行时数据区,类加载器和执行引擎。
虚拟机将描述类的数据从Class文件加载到内存,并对数据进行校验、准备、解析和初始化,最终就会形成可以被虚拟...
文章
科技小能手
2017-11-12
866浏览量
java 中的 final 变量
http://wenjiesu.iteye.com/blog/799332
【java中为什么会有final变量】:
final这个关键字的含义是“这是无法改变的”或者“终态的”;
那么为什么要阻止改变呢?
java语言的发明者可能由于两个目的而阻止改变:
1)....
文章
浦涛
2016-11-23
1339浏览量
类加载机制
什么是类加载器
负责读取 Java 字节代码,并转换成java.lang.Class类的一个实例;
类加载器与类的”相同“判断
类加载器除了用于加载类外,还可用于确定类在Java虚拟机中的唯一性。
即便是同样的字节代码,被不同的类加载器加载之后所得到的类,也是不同的。
通俗一点来讲,要判断两...
文章
文艺小青年
2017-11-22
795浏览量
JVM-ClassLoader(转)
在加载阶段主要用到的是方法区:
方法区是可供各条线程共享的运行时内存区域。存储了每一个类的结构信息,例如运行时常量池(Runtime Constant Pool)、字段和方法数据、构造函数和普通方法的字节码内容、还包括一些在类、实例、接口初始化时用到的特殊方法。
如果把方法的代码看作它的“静...
文章
developerguy
2014-09-08
825浏览量
深入理解Java:类加载机制及反射
一、Java类加载机制
1.概述
Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。
虚拟机把描...
文章
晚来风急
2017-07-03
1797浏览量
JVM解读-类加载机制
类加载机制
Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的加载机制。
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载(Loading)、验证(Verificatio...
文章
高广超
2017-04-27
529浏览量
Java4Android之复用类
本节内容是对《Thinking in Java》中第七章 复用类的笔记和总结
1 , 复用现有的代码而不去破坏现有的代码,有两种方法:组合和继承。
2,toString()方法。在类需要转变成String对象的时候,就会调用该函数。例如有个A类的对象a , A a ;然后有语句 ”object:“...
文章
迅雷老曾
2014-10-13
1060浏览量
Java 中static与final使用
在java开发中,我们经常会用到static与final关键字,看过很多遍,总是会忘记,下面来总结一下
static关键字的使用
1.修饰成员变量
用static关键字修饰的变量称之为静态变量。而静态变量与非静态变量的区别主要在于:
静态变量:被所有的对象所共享,在内存中只存在一个副本,只在类初...
文章
向上的小杨
2019-02-22
1197浏览量
让类活起来——漫谈JVM类加载机制
JVM类加载机制,点击查看原图
所谓类加载机制,就是虚拟机把描述类的数据从Class文件加载到内存中,并对其进行校验,转换,分析以及初始化,并最终形成虚拟机可以被使用java类型的过程。
Java作为解释型语言,支持动态加载和动态连接,类型的加载、连接以及初始化过程都在程序运行是完成,虽然这样会...
文章
登高且赋
2018-01-09
1011浏览量
为什么我墙裂建议大家使用枚举来实现单例
我们知道,单例模式,一般有七种写法,那么这七种写法中,最好的是哪一种呢?为什么呢?本文就来抽丝剥茧一下。
哪种写单例的方式最好
在StakcOverflow中,有一个关于What is an efficient way to implement a singleton pattern in Jav...
文章
java填坑路
2018-10-11
1313浏览量
《Java从小白到大牛精简版》之第4章 Java语法基础
本章主要为大家介绍Java的一些基本语法,其中包括标识符、关键字、保留字、常量、变量、表达式等内容。
4.1 标识符、关键字和保留字
任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍Java标识符、关键字和保留字。
4.1.1 标识符
标识符就是变量、常量、方法、枚举、类、接口等由程序...
文章
技术小阿哥
2017-11-21
867浏览量
深入学习虚拟机类加载过程
JVM的类加载机制是指虚拟机
把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的实现过程。
类加载过程具体可以分成下面几个步骤:
(1)装载:查找和导入Class文件;
(2)链接:把类的二进制数据合并到JRE中;
校验:检...
文章
邴越
2016-05-05
1431浏览量