
高并发
文章平均质量分 92
加班不秃顶
这个作者很懒,什么都没留下…
展开
-
深入浅出JVM(十七)之并发垃圾收集器CMS
前文描述过,当GC时需要枚举的GC根节点需要极短的停顿(STW)而在遍历GC引用链时,如果用户线程是停顿的,那么不会改变引用,GC线程遍历标识即可但随着堆内存中对象的增多,引用链会越来越长,如果持续让用户线程停顿,在某些需要低延迟的场景是不理想的因此希望能在这个环节让用户线程和GC线程能够并发执行,并发执行就会存在改变对象引用,可能导致对象消失问题,其中可以使用增量更新和原始快照的方式解决,而CMS使用的就是增量更新本文根据并发垃圾收集器CMS深入浅出的解析CMS执行流程、优缺点以及配置参数等。原创 2024-12-13 15:09:36 · 428 阅读 · 0 评论 -
深入浅出JVM(十六)之三色标记法与并发可达性分析
本篇文章围绕并发的可达性分析深入浅出的解析三色标记法、并发可达性分析可能出现的浮动垃圾,对象丢失问题以及解决对象丢失问题的增量更新、原始快照两种方式在三色标记法中,黑色代表已经扫描完成、灰色代表至少有一个引用未扫描、白色代表还未扫描,GC根节点默认黑色隐式可达三色标记法从GC根节点开始将引用对象变成灰色并放入灰色集合,并将自己变成黑色,接着再从灰色集合中取出下一个对象进行处理,直到灰色集合为空,还是白色的对象就是不可达对象。原创 2024-12-12 21:04:35 · 833 阅读 · 0 评论 -
深入浅出JVM(十五)之垃圾收集器(上篇)
本篇文章作为垃圾收集器系列文章的上篇,主要介绍从各个方面对垃圾收集器的分类、GC性能指标、串行垃圾收集器、并行垃圾收集器等垃圾收集器可以划分为串行、并行、并发垃圾收集器,其中串行表示单GC线程独自执行、并行表示多GC线程同时刻执行、并发表示GC、用户线程并发执行发生GC时需要考虑到的性能指标是高吞吐量(GC执行效率高)、低延迟(GC时的停顿时间尽量低),这两个指标往往不能都满足,不同的垃圾收集器有不同特点适合在不同场景下发挥作用。原创 2024-12-12 21:03:07 · 847 阅读 · 0 评论 -
深入浅出JVM(十四)之内存溢出、泄漏与引用
本篇文章围绕引用深入浅出的解析内存溢出与泄漏、强引用、软引用、弱引用、虚引用当JVM没有足够的内存为新对象分配空间时就会发生内存溢出抛出OOM内存溢出有两种情况,一种是分配的资源太少,不满足必要对象的内存;另一种是发生内存泄漏,不合理的设置对象的生命周期、不关闭资源都会导致内存泄漏使用最常见的就是强引用,强引用只有在可达性分析算法中不可达时才会回收,强引用使用不当是造成内存泄漏的原因之一使用软引用时,只要内存不足触发Full GC时就会对软引用进行回收使用弱引用时,只要发生GC就会对弱引用进行回收。原创 2024-12-12 21:02:16 · 735 阅读 · 0 评论 -
深入浅出JVM(十三)之垃圾回收算法细节
本篇文章围绕垃圾回收算法细节深入浅出解析STW、根节点枚举避免长时间STW、安全区与安全区域、记忆集解决跨代引用增大GC Root扫描范围、维护卡表的写屏障等为了避免用户线程改变引用关系,能够正确的进行可达性分析,需要stop the word 停止用户线程枚举GC Roots时为了避免长时间的STW,使用OopMap记录引用位置,避免扫描方法区由于引用关系的变化,实时更新维护OopMap的开销是很大的,只有在循环、异常跳转、方法调用位置的安全点才更新OopMap,因此只有在安全点中才能正确的进行GC。原创 2024-12-12 21:00:05 · 652 阅读 · 0 评论 -
深入浅出JVM(十二)之垃圾回收算法
本篇文章围绕垃圾回收算法,深入浅出解析垃圾回收分类、标记清除、复制、标记整理、分代收集、增量收集、分区算法等多种算法从垃圾回收空间上划分可以分为Full GC回收整个堆加上元空间、Minor GC回收新生代、major GC回收老年代、mixed GC回收新生代加老年代标记清除算法会遍历引用链标记可达对象从而清理不可达对象,会产生内存碎片,速度一般复制算法不会产生内存碎片,并且速度很快,但是会浪费survivor区一半空间,并且会移动对象。原创 2024-12-12 20:58:52 · 915 阅读 · 0 评论 -
深入浅出JVM(十一)之如何判断对象“已死”
主要探讨了 JVM 中如何判断对象“已死”。介绍了引用计数法,其有循环引用等缺点,JVM 未采用。重点讲解了可达性分析算法,包括其原理、可作为根节点的对象及缺点。还阐述了对象真正死亡需经过至少 2 次标记,不可达对象会经筛选,有必要执行 finalize 方法的放入队列,若在方法中自救成功则可达,finalize 方法仅执行一次。原创 2024-12-11 16:12:38 · 666 阅读 · 0 评论 -
深入浅出JVM(十)之字节码指令(下篇)
本文是关于字节码指令的下篇,解析了方法调用与返回、操作数栈管理、控制转义、异常处理、同步等字节码指令。包括各类方法调用指令,如静态、私有等;操作数栈的出栈入栈指令;条件跳转等控制转义指令;抛出异常的处理指令;以及同步控制的加锁解锁指令,并说明了异常时的处理情况。原创 2024-12-11 16:10:14 · 1035 阅读 · 0 评论 -
深入浅出JVM(九)之字节码指令(上篇)
这篇文章是关于 JVM 字节码指令(上篇)的解析。介绍了由于指令种类多分为上下篇,上篇包括加载存储、算术、类型转换、对象创建与访问等指令。指出字节码指令多以特定字母开头,数据来源多样,算术指令用后缀表达式,类型转换有宽化和窄化且可能失精度,对象创建与访问指令包含多种具体操作。还提到了参考资料和相关交流方式。原创 2024-12-11 16:07:15 · 989 阅读 · 0 评论 -
深入浅出JVM(八)之类加载器
深入探讨了 JVM 中的类加载器,包括其分类(引导类和自定义类,后者包含扩展类、系统类等)、种类、双亲委派模型、源码解析、自定义类加载器及热替换。类加载器将字节码生成 Class 对象加载到虚拟机,有显式和隐式加载方式。双亲委派模型保证核心类库安全,某些情况存在缺点。基本类型无需加载,数组类型加载器取决于元素。不同类加载器加载的相同类不是同一个类,通过不同类加载实现热替换。原创 2024-12-11 15:55:57 · 1008 阅读 · 0 评论 -
接招吧!最强 “高并发” 系统设计 46 连问,分分钟秒杀一众面试者!
接招吧!最强 “高并发” 系统设计 46 连问,分分钟秒杀一众面试者!谈起“高并发” 系统设计相关知识,我想你必须要认知到的一个问题是:它是你获取一线大厂Offer 必不可少的利器!!对于各大公司(比如阿里、腾讯、今日头条等)来说,仅仅懂得CRUD的程序员便不如有“高并发”系统设计经验的程序员有吸引力!所以当你面试时,面试官会要求你有高并发设计经验,且有的面试官会询问你的系统在遭遇百万并发时可能有哪些瓶颈点,以及有什么优化思路等问题...为的就是检验你是否真的了解这方面的内容...为助你迅速掌...原创 2021-05-28 13:40:48 · 476 阅读 · 3 评论