![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 88
炎升
这个作者很懒,什么都没留下…
展开
-
JMH基准测试工具 (一):介绍
在日常开发中,我们对一些代码的调用或者工具的使用会存在多种选择方式,在不确定他们性能的时候,我们首先想要做的就是去测量它。大多数时候,我们会简单的采用多次计数的方式来测量,来看这个方法的总耗时。 但是,如果熟悉JVM类加载机制的话,应该知道JVM默认的执行模式是JIT编译与解释混合执行。JVM通过热点代码统计分析,识别高频方法的调用、循环体、公共模块等,基于JIT动态编译技术,会将热点代码转换成机器码,直接交给CPU执行。 也就是说,JVM会不断的进行编译优化,这就使得很难确定重原创 2022-12-06 16:20:00 · 1686 阅读 · 0 评论 -
IO、BIO、NIO、AIO
关注的是。:被调用方做完内部所有事情后再返回,同步调用的调用者一定会得到被调用方的结果。:被调用方先返回,再做事情,做完所有事情后再通知调用方(回调方法),异步调用方不会立即得到被调用方的结果,而是当被调用方执行完成后通过回调函数处理该结果。原创 2022-08-24 14:59:40 · 698 阅读 · 0 评论 -
cache line 缓存行
程序局部性原理,可以提高效率,充分发挥总线CPU针脚等一次性读取更多数据的能力。这些协议是怎么生效的,如上图中x被改了之后他给自己标记成Modified,然后数据写回内存后通知其他核,给他们的这个缓存行状态改成Invalid,意思就是告诉他们我改过了,你们这个都无效了,如果需要用到最新数据,重新去内存中取。在多核CPU就会遇到这样一个问题,xy的数据在一个缓存行,第一个核将x改了,第二个核将y改了,他们再使用另一个值的时候,他们都不知道值变了,这就是缓存一致性的问题,怎么来解决这个问题呢?原创 2022-08-22 16:14:39 · 1728 阅读 · 0 评论 -
java内存模型、volatile关键字、synchronized
volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatile关键字的场景。原创 2022-08-20 14:20:41 · 1047 阅读 · 0 评论 -
jvm内存说明(自己整理)
JVM的逻辑内存模型JVM载执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。具体如下图所示:1、程序计数器(Program Counter Register)首先我们要搞清楚JVM的多线程实现方式。JVM的多线程是通过CPU时间片轮转(即线程轮流切换并分配处理器执行时间)算法来实现的。也就是说,某个线程在执行过程中可能会因为时间片耗尽而原创 2020-12-07 10:57:47 · 385 阅读 · 0 评论 -
高并发学习-20220816-锁升级
前提:使用synchronized给object对象加锁。1、刚new出的 object对象,是没有上锁的。-- 无锁2、如果同一时刻只有一个线程在使用object对象 这把锁,则将从 无锁-升级为-偏向锁。object对象头markwod中会写入当前线程指针。3、只要发生锁竞争,及同一个时刻还有其他线程在竞争这把锁,则 将从 偏向锁-升级为-轻量级锁(也叫自旋锁)。升级过程为:①撤销偏向锁。......原创 2022-08-18 10:52:32 · 280 阅读 · 0 评论