JVM
Java部落格
为了部落!!!
展开
-
Disruptor引发的OOM
一、OOM原因分析:Disruptor的队列深度过长,同时队列中元素过大,会导致堆内存一直不停堆积无法释放,最终导致OOM二、MAT工具分析定位:1、查看堆中较大的对象有哪些?个event大小100多K ,如果队列里全是这种报错异常的event,也有50M大小RingBuffer中元素 event 中保存了外部接口报错的堆栈信息。而该异常信息并不需要保存2、定位查看使用Disruptor的代码队列深度event实体类成员变量中有保存异常信息接口报错,将异常堆栈保存到event中...原创 2020-12-04 15:52:18 · 517 阅读 · 0 评论 -
JVM垃圾回收算法小结
对象生存判断算法1、引用计数法给对象中添加一个引用计数器,每当一个地方引用到这个对象的时候,计数器值就加1,当引用失效时,计数器的值就减1,当计数器值变为0时,便说明该对象不可能再被使用了。优点:实现简单,判定效率较高。缺点:当出现对象之间的相互循环引用时,即两个类中都存在引用字段分别引用着对方的时候,在回收过程中这时该算法无效。2、可达性分析算法为了克服引用计数法的弊端,现在比较主流...原创 2019-02-18 11:14:47 · 110 阅读 · 0 评论