码迷,mamicode.com
首页 >  
搜索关键字:深入理解java虚拟机    ( 538个结果
java中‘==’和‘equals()’方法的有趣探索
这两天在看周志明的《深入理解java虚拟机》,受益颇多,根据书中的启示,对java中‘==’和‘equals()’方法的区别做了一些探索:1、为什么值为3两个Integer对象使用==比较时返回true,而同为321的Integer对象在==时却为false?2、为什么value相同的Long和Integer对象使用==比较返回了false?...
分类:编程语言   时间:2014-12-21 18:02:09    阅读次数:224
深入理解Java虚拟机笔记---原子性、可见性、有序性
Java内存模型是围绕着并发过程中如何处理原子性、可见性、有序性这三个特征来建立的,下面是这三个特性的实现原理: 1.原子性(Atomicity)    由Java内存模型来直接保证的原子性变量操作包括read、load、use、assign、store和write六个,大致可以认为基础数据类型的访问和读写是具备原子性的。如果应用场景需要一个更大范围的原子性保证,Java内存模型还提供了loc...
分类:编程语言   时间:2014-12-17 00:23:19    阅读次数:236
深入理解Java虚拟机笔记---内存模型
主内存与工作内存    Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量值这样的底层细节。此处的变量(Variable)与Java编译中所说的变量略有区别,它包括了实例字段,静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,因为后者是线程私有的,不会被共享,自然就不存在竞争的问题。了为获得比较好的执行效率,Java内存模型并没有限...
分类:编程语言   时间:2014-12-15 21:50:01    阅读次数:209
深入理解Java虚拟机笔记---volatile变量的特殊规则
当一个变量定义成volatile之后,它将具备两种特性:第一是保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其它线程是可以立即得知的,变量值在线程间传递均需要通过主内存来完成,如:线程A修改一个普通变量的值,然后向主内存进行回写,另外一条线程B在线程A回写完成了之后再从主内存进行读取操作,新变量的值才会对线程B可见。    关于volatile变量的可见...
分类:编程语言   时间:2014-12-15 21:48:58    阅读次数:249
深入理解Java虚拟机笔记---方法调用
方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。在程序运行时,进行方法调用是最普遍、最频繁的操作。在Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(相当于直接引用)。这个特性给Java带来了更强大的动态扩展能力,但也...
分类:编程语言   时间:2014-12-14 15:56:34    阅读次数:236
深入理解Java虚拟机笔记---运行时栈帧结构
栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。    每一个栈帧都包括了局部变量表,操作数栈,动态连接,方法返回地址和一些额外的...
分类:编程语言   时间:2014-12-14 13:18:31    阅读次数:227
深入理解Java虚拟机笔记---类加载过程
一、加载    “加载”(Loading)阶段是“类加载”(Class Loading)过程的一个阶段。在加载阶段,虚拟机需要完成以下三件事情: a.通过一个类的全限制名来获取定义此类的二进制字节流。 b.将这个字节流所代表的静态存储结构转化为方法区的运行进数据结构。 c.在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口。    虚拟机规...
分类:编程语言   时间:2014-12-14 00:45:28    阅读次数:138
Jvm基础-Java运行时数据区
最近在看《深入理解Java虚拟机》,里面讲到了Java运行时数据区,这是Jvm基本知识,把读书笔记记录在此。这些知识属于常识,都能查到的,如果我有理解不对的地方,还请指出。首先把图贴上来,图来自JVM Runtime Data Areas(运行时数据区),感谢。由上图可知,Java运行时数据区域包括...
分类:编程语言   时间:2014-12-14 00:36:47    阅读次数:205
深入理解Java虚拟机笔记---类加载时机
类从被加载到虚拟机内存中开始,到缷载出内存为止,它的整个生命周期包括了:加载(Loading),验证(Verification),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using),缷载(Unloading)七个阶段。其中验证,准备,解析三个阶段统称为连接(Linking)阶段,这七个阶段的发生顺序如下图:    加载,验...
分类:编程语言   时间:2014-12-13 19:26:59    阅读次数:226
深入理解Java虚拟机笔记---属性表集合
在Class文件,字段表,方法表中都可以携带自己的属性表集合,以用于描述某些场景专有的信息。与Class文件中其它的数据项目要求的顺序、长度和内容不同,属性表集合的限制稍微宽松一些,不再要求各个属性表具有严格的顺序,并且只要不与已有的属性名重复,任何人实现的编译器都可以向属性表中写入自己定义的属性信息,Java虚拟机运行时会忽略掉它不认识的属性。为了能正确地解析Class文件,《Java虚拟机规范...
分类:编程语言   时间:2014-12-13 16:34:35    阅读次数:276
538条   上一页 1 ... 46 47 48 49 50 ... 54 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!