jvm
文章平均质量分 87
主要是jvm的一些问题
韩哥123456
这个作者很懒,什么都没留下…
展开
-
百万级qps系统的实现
常规的缓存系统的设计缓存系统大概分为2种:1:数据量不大,拉取全量的数据,缓存在本地。2:数据量很大,根据二八定理,只拉取活跃的数据缓存在本地。下面我主要说下第一种方案,我们的系统主要是第一种方案,如果有时间会说下第二种。缓存中心的设计:1:缓存中心采用一主多从的架构2:主节点检测到数据的更新,会扫描库里全部的数据,更新到缓存里3:数据库做了读写分离,扫描的也只是从库4:为了避免太大的数据库压力,只有主节点拉取数据库的数据5:从节点只拉取主节点的缓存数据,不再原创 2021-03-14 20:56:57 · 4027 阅读 · 10 评论 -
Garbage First(g1)垃圾回收器
cms优秀么?优秀,但是对于日渐庞大的内存,特别是堆内存超过8g之后,stop the world的时间会被无限拉长,cms并不能给与太大帮助,跨代对象的扫描也是问题,更何况final remark是要扫描整个年轻代,这点看是很难接受的,g1是如何解决这些问题,针对这些问题,设计上怎么去下手,下面就介绍下g1垃圾回收器,先介绍几个概念:Regioncms是有严格意义上的分区,这种划分的特点是各代的存储地址(逻辑地址)是连续的。而g1的内存没有严格意义上内存分区,所有的内存被分为一个个大小的Reg原创 2020-06-27 19:13:18 · 488 阅读 · 0 评论 -
Concurrent Mark Sweep(cms)垃圾回收器
好长时间没写过博客了,突发奇想,开始写下最近几年的积累吧,先从Concurrent Mark Sweep(cms)开始,希望自己没有太懒吧,坚持写完吧,先介绍以下概念:GC ROOT这里我引用下RednaxelaFX的原话,所谓“GC roots”,或者说tracing GC的“根集合”,就是一组必须活跃的引用(重点)。例如说,这些引用可能包括:所有Java线程当前活跃的栈帧里指向GC堆里的对象的引用;换句话说,当前所有正在被调用的方法的引用类型的参数/局部变量/临时值。 V...原创 2020-06-26 00:14:55 · 1458 阅读 · 7 评论 -
jvm,apache-commons-pool的PhantomReference引起的一次线上内存崩掉的分析
前一段时间,临部门的兄弟泰国站的项目,系统上线二天,或者重启之后系统总是莫名的shutdown,我对这方面比较感兴趣,也处理过一些这种问题,就写下处理的过程:左边是没有修改之前的,右边是修改之后的,分析这个问题之前,我先介绍一下工具,用的是Mat(Memory Analyzer Tool),我比较喜欢用这个,导入内存dump快照:一般选择leak suspects report这个view就可以了,看下面的视图:从上面的视图,可以看出com.mysql.jdbc.NonRegiste原创 2020-06-26 16:17:13 · 482 阅读 · 0 评论