首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/lishangzhi/blog/4784627

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

Java - JVM 内存管理

1. 查找失效对象 1.1 引用计数法 可以为每一个对象添加一个引用计数器,用于存储当前对象被几处引用。 引用计数法简单高效,但无法解决循环引用问题,如A引用B,B又引用A,且这两个对象不再被其它对象引用,那么在使用引用计数法的情况下,这两个对象的引用数均为1,且无法减至0。 1.2 可达性分析算法 可以通过一系列成为“GC Roots”的对象作为起始点,并从这些节点向下搜索,当一个对象到GC Roots不可达,则证明该对象不可用。 图1-1 GC Roots对象包括下面几种: o 虚拟机栈中引用的对象。 o 方法区中类静态属性引用的对象。 o 方法区中常量引用的对象。 o 本地方法栈中引用的对象。 一个对象要真正被清理,至少需要两次标记过程。 1.3 回收方法区 方法区垃圾回收的效率与性价比都远低于堆内存的回收。 主要回收两部分:废弃常量和无用的类。 2. 垃圾收集算法 2.1 标记-清除算法 图2-1 标记清除算法的标记阶段与清除阶段效率都不高,且会产生大量内存碎片。 2.2 复制算法 图2-2 将内存平分为两块,每次只使用其中一块。 当...

关于一次Kafka重复消费问题排查记录的闲谈

  前段时间上线一个新服务,我们的运营在测试的时候,导入了一批数据,结果目标表里的数据是预期数量的2倍,有大量的重复数据,一开始我认为可能是我没有过滤数据类型导致的,我所消费的数据是通过监听数据库的binlog解析后推送到Kafka的数据,我收到kafka消息经过反序列化得到多条数据库表的变动记录,每一条记录都有一个类型:INSERT,UPDATE,DELETE,其实也就是对应SQL的类型,我一开始并没有判断这个类型,而是收到的所有数据都进行后续的处理,运营也说可能是有UPDATE操作的,于是我加了过滤,只处理INSERT类型数据,改好之后想着肯定没问题了,于是让运营再删掉原有数据重新导入一遍,第二天再看结果。   然而第二天,问题依旧......这下可难到我了,想了一会猜测会不会是前面的环节推送的数据就是重复的呢?但是也不能瞎猜,于是我在处理一条数据之前打印上offset,发版后开始观察日志,不一会儿库里出现了重复数据了,我拿到重复的订单号之后去日志中搜索,结果,两条数据的offset是一样的?   看来这真是我消费的问题了,但是之前类似的项目也是同样的消费方式,从来没出现过重复消费...

相关文章

发表评论

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册