JVM垃圾收集器
对大家啰嗦几句,很多时候我不会去深入了解一样东西,很多知识在脑海中有一个印象。等用到的时候才会认真仔细的来了解此内容。
因为这个原因,自己没有得到很好的提升。
最新,线上的hbase挂掉了:
找下日志的原因是CMS回收时间长达60s引起的。(运行了不少时间,不知道CMS每次的回收时长都是这么大,还是CMS使用标记-整理算法引起的时长过大,也可能是CPU资源的影响)。
错误原因,说明书url:http://hbase.apache.org/book.html#trouble.rs.runtime.zkexpired。解决方法:
-
Make sure you give plenty of RAM (in hbase-env.sh), the default of 1GB won’t be able to sustain long running imports.
-
Make sure you don’t swap, the JVM never behaves well under swapping.
-
Make sure you are not CPU starving the RegionServer thread. For example, if you are running a MapReduce job using 6 CPU-intensive tasks on a machine with 4 cores, you are probably starving the RegionServer enough to create longer garbage collection pauses.
-
Increase the ZooKeeper session timeout
记下上述事件,给自己一个思考的过程。
先说下自己有限的认知,现在大部分使用的方式为:
1-jdk1.7 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)
2- jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)
3- jdk1.9 默认垃圾收集器G1
4-ParNew(新生代)+CMS(老年代),组合回收器,hbase经常使用。
1- Serial收集器
一个单线程的收集器,现在主要应用在Client模式下的虚拟机。
2- ParNew收集器
Serial收集器的多线程版,实现了让垃圾收集线程与用户线程同时工作。
3- Parallel Scavenge收集器
使用的复制算法,支持多线程,CMS等收集器的关注点是尽可能地缩短垃圾收集时用户线程的停顿时间,而parallel Scavenge目的则是达到一个可控制的吞吐量。
停顿时间越短越适合需要与用户交互的程序,,而吞吐量则是尽可能高效利用CPU。加入需要回收500M的垃圾,CMS则可能是每次回收100,每次2ms,总用时10ms。parallel Scavenge是一次性回收500M,用时5s。
4- Serial Old收集器
serial回收老年代版本,使用“标记-整理算法”。和serial一样主要用在Client模式下的虚拟机。
5- Parallel Old收集器
Parallel Scavenge收集器 的老年代版本,使用“标记-整理”算法。
6- CMS收集器
重视响应时间,使用的是“标记-清理算法”,为了提高程序的交互,希望停顿时间最短。
分为四个阶段:初始标记---并发标记---重新标记---并发清除。
第一和第三个阶段需要stop-the-world。
缺点有三:1- CMS对CPU资源非常敏感,CPU资源不足时,会挤占用户线程资源;
2- CMS收集器无法处理浮动垃圾,由于并发的原因,会出现一些持续的垃圾(称浮动垃圾),可能出现“Concurrent Mode Failure”失败而导致另一次Full GC的产生。
3- 空间碎片,解决方法,是利用“标记-整理算法”进行清理。
7- G1收集器
基于“标记-整理算法”,相对于CMS收集器,更有利于程序长时间的运行。因为没有内存碎片。
可预测的停顿。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!