- 博客(3)
- 收藏
- 关注
原创 java线程模型与volatile学习
java并发volatile指令重排序问题JMM-同步八种操作介绍同步规则分析 volatile保证了JAVA多线程情况下访问同一个共享变量,其中一个线程对该变量进行了修改通过缓存一致性协议,使其他线程在自己的工作内存中可以感知到该变量的修改达到了变量的可见性。volatile还通过设置内存屏障保证了CPU和编译器不会对该变量进行指令重排的操作。volatile解决了内存变量的一致性、有序性但是不能解决内存的原子性操作,可以通过LOCK或者synchronized来解决java 线程的原子性问题。 java
2020-06-23 00:58:29 221 1
原创 JVM学习记录-2
JVM学习记录2自己理解JVM常用配置: 自己理解 程序运行的时候将 静态变量、方法、类元信息存放在元空间中,线程执行的时候的局部变量、指针链接、操作数栈(数据计算的临时存放点),变量存放到栈线程,和方法的出口。 程序计数器记录改线程执行到哪一行(多线程停顿切换),对象存放在堆内存中与线程栈中的变量和元空间中单静态变量通过指针相关联。 垃圾回收时候GCroot跟 是判断元空间中的静态变量和栈中的变量还有没有引用从而进行相应的垃圾回收 对象大多存放在堆的年轻代中 默认分配比例是 : 年轻代2/3, 老年的3
2020-06-13 00:26:03 144
原创 JVM 学习记录-1
JVM 学习记录 1.Jvm的加载过程主要如下几步 加载>验证>准备>解析>初始化。 加载:在硬盘上通过IO读取相应的Class字节码文件。 验证:校验Class文件字节码文件的正确性。 准备:给类的静态变了、方法分配内存空间并赋予默认值(注:不是静态代码块的辅助而是变了的默认辅助入int a=0)。 解析:将符号饮用替换为直接引用、将静态方法替换为指向数据所存内存的指针或句柄等(直接引用)。 初始化:对类的静态变量初始化为指定的值,执行静态代码块。 类加载器和双亲委派机制 .类的
2020-06-12 23:29:18 178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人