Java
文章平均质量分 63
whx_0612
这个作者很懒,什么都没留下…
展开
-
关于CMS收集器与G1收集器
关于CMS收集器与G1收集器CMS收集器介绍G1收集器写这篇文章也是源于前几天阿里一面时被问到“CMS收集器有哪些措施让它比其他收集器更优秀时”回答不上来,文章参考《深入理解JAVA虚拟机》CMS收集器介绍CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,是基于标记-清除算法实现的。主要分为四个步骤:1)初始标记:标记一下GC Roots能够直接关联到的对象,速度很快。2)并发标记:从GC Roots直接关联到的对象开始遍历整个对象图,耗时长,原创 2021-04-13 21:32:45 · 175 阅读 · 0 评论 -
java中内存泄露8种情况的总结(转载)
由于java的JVM引入了垃圾回收机制,垃圾回收器会自动回收不再使用的对象,了解JVM回收机制的都知道JVM是使用引用计数法和可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一个对象是否还被引用。那么对于这种情况下,由于代码的实现不同就会出现很多种内存泄漏问题(让JVM误以为此对象还在引用中,无法回收,造成内存泄漏)。1、静态集合类,如HashMap、LinkedList等等。如果这些容器为静态的,那么它们的生命周期与程序一致,则容器中的对象在程序结束之前将不能被释放,从而造成内存泄漏。简单而言转载 2020-11-05 20:23:44 · 1152 阅读 · 0 评论 -
面试经典问题 -- spring ioc
Spring IOC 容器源码分析转正自javaGuide的文章,转载只是为了方便自己阅读和防止遗忘Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题。本文采用的源码版本是 4.3.11.RELEASE,算是 5.0.x转载 2020-11-05 19:37:34 · 104 阅读 · 0 评论 -
深入理解JVM(二):垃圾收集与内存分配策略
垃圾收集与内存分配策略垃圾收集内存分配与回收策略对象优先在Eden分配当Eden没有空间分配时,发起一次MinorGC-XX:+PrintGCDetails输出GC日志-XX:SurvivorRatio=8(Eden:From Survivor:To Survivor = 8:1:1);-Xms20M(堆最小为20M)-Xmx20M(堆最大为20M)-Xmn10M(10M分给新生代)大对象直接进入老年代-XX:PretenureSizeThreshold参数(大于这个大小的原创 2020-09-10 15:34:23 · 92 阅读 · 0 评论 -
深入理解JVM(一)
第二章、Java内存区域和内存溢出异常2.1、运行时数据区域线程私有部分(图中白色部分)程序计数器:作用:使得线程切换后能恢复到正确的执行位置。虚机机栈:作用:描述Java方法执行的内存模型:每个方法在执行的同时会创建一个帧栈用于存储局部变量表,操作数栈、动态链接、方法出口信息等。(在一个方法执行的过程中会细讲)本地方法栈:作用:与虚拟机栈类似,但是为Native方法服务程序公有部分(图中绿色部分)堆:作用:存放对象实例(new)内部结构:新生代和老年代(原创 2020-09-10 15:32:01 · 120 阅读 · 0 评论 -
Java的JMM内存模型
要说清楚JMM的工作原理首先清楚Happens-Before规则。Happens-Before定义如果一个操作Happens-Before另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。两个操作之间存在Happens-Before关系,并不意味着一定要按照Happens-Before原则制定的顺序来执行。如果重排序之后的执行结果与按照Happens-Before关系来执行的结果一致,那么这种重排序并不非法。 注意:不能将Happens-Befor原创 2020-09-10 15:29:41 · 144 阅读 · 0 评论