![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM虚拟机
文章平均质量分 51
爱梦
这个作者很懒,什么都没留下…
展开
-
JVM垃圾回收器
参考文章https://www.cnblogs.com/blythe/p/7488061.html,写的非常好。原创 2021-09-14 17:38:31 · 71 阅读 · 0 评论 -
JVM内存模型
运行时数据区程序计数器(PC寄存器)程序计数器是每个线程所私有的。由于在JVM中,多线程是通过线程轮流切换来获得CPU执行时间的,因此,在任一具体时刻,一个CPU的内核只会执行一条线程中的指令,因此,为了能够使得每个线程都在线程切换后能够恢复在切换之前的程序执行位置,每个线程都需要有自己独立的程序计数器,并且不能互相被干扰,否则就会影响到程序的正常执行次序。因此,可以这么说,程序计数器是每个线程所私有的。java栈Java栈中存放的是一个个的栈帧,每个栈帧对应一个被调用的方法原创 2021-09-09 08:48:25 · 72 阅读 · 0 评论 -
MESI(缓存一致性协议)
现在的处理器都是多核处理器,并且每个核都带有多个缓存(指令缓存和数据缓存,见下图)。为什么需要缓存呢,这是因为CPU访问内存的速度比较慢,所以在CPU和内存之间加了个缓存以提高访问速度。既然每个核都有缓存,那么假设两个核或者多个核同时访问同一个变量时这些缓存是如何进行同步的呢(缓存细分为一个个缓存行),这就有了MESI协议。1.当cpu1读取一个缓存行时,状态为E,独享。2.当cpu2读取同一个缓存行时,状态为S,共享。3.当cpu1修改该缓存时,状态改为M修改。cpu2中的缓存状态为I,无原创 2021-09-01 08:52:19 · 156 阅读 · 0 评论 -
JVM虚拟机-class加载过程
一、Java从编码到执行首先我们来看一下Java是如何从编码到执行的呢? 我们有一个x.java文件通过执行javac命令可以变成x.class文件,当我们调用Java命令的时候class文件会被装载到内存中,这个过程叫做classloader。一般情况下我们自己写代码的时候会用到Java的类库,所以在加载的时候也会把Java类库相关的类也加载到内存中。装载完成之后会调用字节码解释器和JIT即时编译器来进行解释和编译,编译完之后由执行引擎开始执行,执行引擎下面对应的就是操作系统硬件了。下图是大体的流程:原创 2021-08-31 14:28:40 · 390 阅读 · 0 评论