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程序使用的是Unicode编码字符集,是说java内存里面使用Unicode字符集操作文字,java内存外当然使用的是程序员自己制定的字符集,如果程序员没有指定字符集,那么会使用操作系统默认的字符集。linux系统下面可以使用echo$LANG查看系统默认的字符集,使用locale查看..
分类:
编程语言 时间:
2015-05-25 20:35:01
阅读次数:
159
此次主要做一下java内存区域和GC机制的知识小结,下面的段落部分摘自网络,部分摘自书籍,具体的链接忘记了,因为这是之前学习的时候做下的笔记。还望原作者多多包涵!1 Java垃圾回收Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序...
分类:
编程语言 时间:
2015-05-24 17:30:32
阅读次数:
206
JVM内存组成结构JVM栈由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示:1)堆所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由From Space和To ...
分类:
编程语言 时间:
2015-05-23 22:28:43
阅读次数:
210
本文通过介绍Java的新/旧内存模型,来展示Java技术的历史变迁。旧的Java内存模型Java使用的是共享内存的并发模型,在线程之间共享变量。Java语言定义了线程模型规范,通过内存模型控制线程与变量的交互,从而实现Java线程之间的通信。在JDK5之前,Java一直使用的是旧内存模型。如图1所示...
分类:
编程语言 时间:
2015-05-22 00:11:16
阅读次数:
196
所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?Java内存模型Java内存模型在JVM specification, Java SE 7 Edition, and mainly in the...
分类:
编程语言 时间:
2015-05-21 12:23:15
阅读次数:
191
一、使用键盘录入数据 三步:1、导入包:import java.util.Scanner; 2、创建键盘录入对象:Scanner sc=new Scanner(System.in); 3、通过对象获取数据:int x=sc.nextInt();二、Java内存分配 java程...
分类:
编程语言 时间:
2015-05-21 10:22:11
阅读次数:
183
在本系列教程中,将带大家动手探究Java内存泄露之谜,并教授给读者相关的分析方法。以下是一个案例。 最近有一个服务器,经常运行的时候就出现过载宕机的现象。重启脚本和系统后,该个问题还是会出现。尽管有大量的...
分类:
编程语言 时间:
2015-05-20 11:36:16
阅读次数:
222