JVM的模型(多个不同角度的观察)

描述:

       对于JVM,我想,对于Java开发的人并不陌生,但是对于里面的一些内容来说,我想就不是很了解了。我们平常对于JVM我想了解得最多的就是它的内存模型了,更确切的说,我想就是JVM的运行角度的理解。那么,从其他角度来看的话,你真的了解JVM吗?下面,我从多个不同角度来对JVM进行描述。

 

(1)从JVM运行时视角来看,JVM内存可分为JVM栈、本地方法栈、PC计数器、方法区、堆;其中前三区是线程所私有的,后两者则是所有线程共有的;

                             

(2)从JVM内存功能视角来看,JVM可分为堆内存、非堆内存与其他。其中堆内存对应于上述的堆区;非堆内存对应于上述的JVM栈、本地方法栈、PC计数器、方法区;其他则对应于直接内存;

                            

(3)从线程运行视角来看,JVM可分为主内存与线程工作内存。Java内存模型规定了所有的变量都存储在主内存中;每个线程的工作内存保存了被该线程使用到的变量,这些变量是主内存的副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量;

                            

(4)从垃圾回收视角来看,JVM中的堆区=新生代+老年代。新生代主要用于存放新创建的对象与存活时长小的对象,新生代=E+S1+S2;老年代则用于存放存活时间长的对象;

                            

总结:其实,JVM从不同的角度来看是有不同的划分的,这样我们也能够更加的对其进行了解。并且,这里面有比较重要的知识点,比如,为什么说局部变量就是线程安全的呢?volatile关键字它的功能原理是如何呢?关于这些问题,可以浏览另外一篇博文:https://blog.csdn.net/cs_hnu_scw/article/details/79635874
 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值