
jvm
文章平均质量分 63
Duncan_dsf
这个作者很懒,什么都没留下…
展开
-
jvm学习笔记(一):内存模型
前段时间看了一点《深入理解jvm》,记下笔记,总结一下自己的理解内存模型黑色的部分(方法区和堆)为所有线程共享,白色部分(虚拟机栈、本地方法栈、pc计数器)为线程私有pc计数器学过计算机组成原理的应该对这个有印象。pc计数器存放的是计算机下一条指令的地址,计算机读取pc计数器中的值,依据这个值去指令寄存器读出下一条指令,然后执行。该区域为线程私有。虚拟机栈...原创 2018-07-31 12:28:45 · 239 阅读 · 0 评论 -
jmm与并发
JMM主内存和工作内存主内存包括:实例字段、静态字段、和构成数组对象的元素;但不包括局部变量和方法参数,因为他们是线程私有的所有变量都存储在主内存工作内存是线程使用到的变量的主内存的副本,线程对变量的操作必须在工作内存中进行内存交互操作lockunlockreadloaduseassignstorewrite操作规则:volatile ——jv...原创 2019-03-13 10:44:24 · 305 阅读 · 0 评论 -
线程安全——定义及实现
线程安全级别安全程度从强到弱:不可变 绝对线程安全 相对线程安全 线程兼容 线程对立不可变 不可变的对象一定是线程安全的(前提this引用没有逃逸)基本类型只要定义未final,就可以保证不可变如果是引用类型,需要保证对象的状态不会受对象行为影响;所以引用类型的不安全在于可能线程一判断某对象状态后,另一线程进行了改变。符合不可变要求的类型:String、Number的子类:Integ...原创 2019-03-13 10:45:26 · 550 阅读 · 0 评论 -
jvm与锁优化
锁优化自旋锁和自适应锁:共享数据的锁定短的话,挂起和恢复线程并不值得,当遇到共享数据被锁定时,先不放弃cpu执行时间,等待看看持有锁的线程释放很快释放锁;为了让线程等待,我们只需让线程执行一个忙循环(空循环,自旋),这就是自旋锁而假如锁定时间长的话,忙等待需要占用的时间浪费,因此自旋的等待时间有限度,如果自旋超过限定次数仍然没有获取锁,则需要使用传统的方式挂起线程jdk1.6默认开启自...原创 2019-03-13 10:46:20 · 197 阅读 · 0 评论