最近在看《深入理解Java虚拟机》,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程,大部分的程序员在写程序时不会太关注Java运行时数据区域的结构:感觉有必要通过几个实在的例子来加深对这几个区域的了解1)Java堆所有对象的实例分配都在Java堆上分配内存,堆大小由-...
分类:
编程语言 时间:
2015-06-14 12:18:45
阅读次数:
157
FROM:http://blog.csdn.net/thinkGhoster/article/details/2307001昨天看到一个关于多态性的帖子,参考了回帖者的理解,加入了一些自己的看法,整理出来供大家参考,不一定完全正确,欢迎大家批评指正。(一)相关类classA...{publicStr...
分类:
编程语言 时间:
2015-06-13 21:35:15
阅读次数:
115
对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现 OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就 一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲: 一.....
分类:
编程语言 时间:
2015-06-11 20:47:37
阅读次数:
150
什么是注解(Annotation):
Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息或者任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。
Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档...
分类:
编程语言 时间:
2015-06-07 17:31:09
阅读次数:
221
深入理解Java虚拟机:JVM高级特性与最佳实践 阅读笔记(内存原理、异常处理): 1.???? Jvm运行时,内存划分如图所示: ? 2.???? 程序计数器: ?????? Jvm将这个计数看作当前线程执行某条字节码的...
分类:
编程语言 时间:
2015-06-04 19:39:29
阅读次数:
205
大概两三个月之前阅读了《深入理解Java虚拟机》(周志明著),也为了加深印象,这里简单的做下总结,想完整点了解JVM知识的也可以阅读本书,书写的不错,相当通俗易懂。第一部分 内存管理机制:Java内存区域与内存溢出:Java内存区域分为堆、栈(Java虚拟机栈和本地方法栈,不过对于hotspot来讲...
分类:
其他好文 时间:
2015-05-29 21:45:07
阅读次数:
187
数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量,在另一个线程读同一个变量,而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个...
分类:
编程语言 时间:
2015-05-26 00:08:29
阅读次数:
217
volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFe...
分类:
编程语言 时间:
2015-05-25 23:56:52
阅读次数:
268
数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位置。写后写a = 1;a = 2;写一个变量之后,再写这个变量。读后写a = b;b = 1;读一个...
分类:
编程语言 时间:
2015-05-25 23:49:36
阅读次数:
191
学习自周志明老师的《深入理解Java虚拟机》第二版类的加载时机如上图所示: 类从被加载到虚拟机内存中开始,直到卸载出内存为止,它的整个生命周期包括了: 加载、验证、准备、解析、初始化、使用和卸载 这7个阶段。其中, 验证、准备和解析这三个部分统称为连接(linking) 。 其中,加载、验证、准.....
分类:
其他好文 时间:
2015-05-25 21:54:46
阅读次数:
97