jvm
阿西吧ckia
这个作者很懒,什么都没留下…
展开
-
JVM运行时数据区
程序计数器(pc计数器) 线程私有,唯一一个没有OutOfMemoryError。JVM的多线程是通过线程轮流切换并分配处理器执行时间来实现的,为了线程切换后能恢复到正确的执行位置,每个线程都有一个独立的pc计数器。 线程正执行一个java方法,则记录的是正执行的字节码指令的地址;native方法,则此时计数器值为空。虚拟机栈(VM Stack) 线程私有,描述的是java方法执...原创 2018-05-06 16:58:16 · 95 阅读 · 0 评论 -
java类变量和对象变量的初始化问题
static final值声明时必须给定初值// final的static变量在类加载的准备阶段就被赋予了给定的值,而且不再发生改变了,位置在方法区//因为static代码块的执行是在类加载的初始化阶段,所以也不能改变final static变量的值//static的非final变量可以在static代码块(初始化阶段)改变值,其在准备阶段已经赋过值(对应类型的零值),位置在方法区//非s...原创 2018-06-30 14:51:25 · 531 阅读 · 0 评论 -
双重检测锁定的单例模式讲解
package SingletonPattern;//双重检查锁机制的单例模式,在JDK1.5之后,双重检查锁定才能够正常达到单例效果public class Demo5 { //volatile确保了instance的内存可见性,即当前线程在使用(use)自己工作内存中的instance的前一步, // 都会从主内存中刷新load(对应的read会发生在load前)一遍,确...原创 2018-06-30 17:40:37 · 639 阅读 · 0 评论 -
synchronized内部代码是否保证有序性
package jvmtest4;public class Main { private static int temp; private static volatile boolean flag; public static void main(String[] args) { temp = 0;flag = false; new Thre...原创 2018-07-01 18:29:01 · 4042 阅读 · 3 评论