描述:

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

 

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

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

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

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

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

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

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

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

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

 

相关文章:

  • 2022-01-01
  • 2021-11-28
  • 2021-05-18
  • 2021-04-15
  • 2023-03-29
  • 2021-05-25
  • 2021-11-06
  • 2021-11-21
猜你喜欢
  • 2021-07-01
  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
  • 2022-02-12
  • 2022-12-23
  • 2021-11-03
相关资源
相似解决方案