volatile是java虚拟机提供最轻量级的同步机制。 volatile两个特性:1,保证同步的变量对所有线程是可见的。虽然对所有线程是即时可见的,但是却不保证原子性,也就是不保证线程安全,比如对于创建20个线程,每个线程都执行i++操作,执行100次,但是i输出的结果小于2000。因为一条i++ ...
分类:
编程语言 时间:
2017-06-09 12:39:29
阅读次数:
142
原文地址:http://blog.csdn.net/hanekawa/article/details/51972259 第二章 Java内存区域与内存溢出异常 一,运行时数据区域: 1. 程序计数器:当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一跳需要执行... ...
分类:
编程语言 时间:
2017-06-08 18:57:20
阅读次数:
325
Java虚拟机运行时数据区 对象的创建 Java创建对象,在语言层面上使用new关键字。虚拟机遇到new关键字时,会检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有,那就必须先执行类加载过程。类加载通过之后,虚拟机将会为新 ...
分类:
编程语言 时间:
2017-06-05 00:40:31
阅读次数:
548
前几篇文章主要是去理解JVM类加载的原理和应用,这一回讲一个可以自己动手的例子,希望能从头到尾的理解类加载以及执行的整个过程。 这个例子是从周志明的著作《深入理解Java虚拟机》第9章里抄来的。原作者因为有丰富的经验,可以站在一个很高的高度去描述整个过程。而我只能以现有的水平,简单的理解这个例子。 ...
分类:
其他好文 时间:
2017-06-03 15:03:11
阅读次数:
279
一、Java虚拟机内存区域如何划分 1、Java虚拟机内存区域的划分 区域名称 作用(用途) 类型 特点 虚拟机规定异常情况 其他说明 1 程序计数器 指示当前正在执行的字节码指令地址 线程私有 1、内存空间较小2、随用户进程的启动和结束而建立和销毁。 无 每个线程都有独立的程序计数器。执行Nati... ...
分类:
编程语言 时间:
2017-06-02 00:58:34
阅读次数:
210
程序计数器 程序计数器是线程私有的区域,很好理解嘛~,每个线程当然得有个计数器记录当前执行到那个指令。占用的内存空间小,可以把它看成是当前线程所执行的字节码的行号指示器。如果线程在执行Java方法,这个计数器记录的是正在执行的虚拟机字节码指令地址;如果执行的是Native方法,这个计数器的值为空(U ...
分类:
编程语言 时间:
2017-05-30 23:19:13
阅读次数:
271
除了在硬件上增加告诉缓存之外,为了使得处理器内部的运算单元能尽量被充分利用,处理器可能会对输入代码进行乱序执行(Out-Of-Order Execution)优化,处理器会在计算之后将乱序执行的结果重组,保证该结果与顺序执行的结果一致,但并不保证程序中各个语句计算的先后顺序与输入代码中的顺序一致,因 ...
分类:
编程语言 时间:
2017-05-27 10:34:27
阅读次数:
213
http://blog.csdn.net/coslay/article/details/48932277 http://blog.csdn.net/qilixiang012/article/category/2857451 http://blog.csdn.net/u010010428/articl ...
分类:
编程语言 时间:
2017-05-27 00:47:58
阅读次数:
200
本篇其实就是一个读书笔记,书是《深入理解JAVA虚拟机》,在网上搜索JAVA内存,说的比较好的其实很多都源自这本书,作为一个JAVA程序员,理解虚拟机是通向高级程序员的必经道路。本篇中的图片源自当时网上,具体出处找不到了,请见谅。 所谓的线程安全,其实就是不同线程对同一个资源的访问和修改引发的数据不 ...
分类:
其他好文 时间:
2017-05-25 01:27:13
阅读次数:
298
Java中将内存的控制交给JVM来实现,方便了JAVA程序猿,当然牺牲了一部分效率,不过总体来看是值得的。那么JVM中是如何设计GC的呢,本文从几个问题入手,然后分析了一下设计思路,如果有理解错误的地方,请批评指正!主要参考了《深入理解JAVA虚拟机》这本书,图是盗来的,图的内容和书上一样。 在JV ...
分类:
其他好文 时间:
2017-05-25 01:19:18
阅读次数:
270