Java虚拟机引发的连环血案

(个人总结系列)我们是不是经常在回顾java虚拟机结构,每个结构的作用,线程并发,锁,volatile,垃圾回收,我也是看了就忘,最近就把这些知识点给串起来了,这样能增强记忆,也便于我们回顾知识点。

由于个人原因,平时很忙,就不会去把每个知识点都给大家分析到位,有些不会的知识点可以根据图去搜索,然后学习,学完之后你就知道为什么一个一个的知识点可以被引出来。

《01》每个线程在创建的时候,都会分配一个程序计数器,用来记录当前线程运行的位置。比如当有两个线程A, 
     B。同一时间处理器只会处理一个线程的任务,当从A线程切换到B,再从B切换到A,这时候就需要从A程序 
     计数器中获取之前程序运行的位置。所以是线程私有的。
《02》和java虚拟机栈一样,本地方法栈是native方法引用的内存栈空间,也是线程私有的。
《03》每个线程在创建的时候,都会分配一个对应的虚拟机栈空间,运行方法时方法入栈,会储存方法內局部变量 
     等,所以是线程私有的。
《04》java虚拟机堆保存了几乎所有的java对象,因此堆是GC垃圾回收的主要战场。线程共享的。
《05》方法区主要存放类结构数据,常量池,静态属性是线程共享的,且一般GC满意度比较低。

知识点链接可以到 https://blog.csdn.net/WangRain1/article/details/100270165 中根据提示去学习。

通过串联知识的方式可以让我们知道有些知识我们为什么要学,为什么会有这些知识?比如锁,为什么会有锁的出现,因为内存模型,为什么会有内存模型,是因为java虚拟机栈是线程私有的,每个线程都有一个虚拟机栈空间,所以线程修改全局变量时候不能及时的刷新到公共内存中,所以要有锁等等。

发布了119 篇原创文章 · 获赞 140 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/WangRain1/article/details/100579935
今日推荐