Java-性能调优-理解GC日志
1
2
3
4
|
[ ~]# cat gc.log. 0 | grep 'Full GC' 1.652 : [Full GC (System) 1.652 : [CMS: 0K->21718K(262144K), 0.0837910 secs] 48398K->21718K(458752K), [CMS Perm : 16462K->16457K(21248K)], 0.0841650 secs] [Times: user= 0.08 sys= 0.00 , real= 0.08 secs] 664643.879 : [GC 664643.879 : [ParNew: 134434K->3202K(196608K), 0.0068030 secs] 327839K->196659K(458752K) icms_dc= 0 , 0.0070080 secs] [Times: user= 0.03 sys= 0.00 , real= 0.01 secs] |
1.625, 664643.879为GC发生的时间,从Java虚拟机启动以来经过的秒数。
“[GC” 和 “[Full GC” 表示GC停顿类型,而不是区分新生代GC和老年代GC.
Full GC会发生Stop-The-World(STW)。如果调用System.gc()触发的Full GC,会显示“[Full GC(System)”
[DefNew、[Tenured、[Perm表示GC发生的区域:
[DefNew:Serial收集器中新生代
[ParNew:ParNew收集器新生代
[PSYoungGen:Parallel Scanvenge收集器新生代
[CMS:CMS收集器老年代
[Tenured:Serial收集器老年代
[Perm,[CMS Perm:永久代
1
|
134434K->3202K(196608K) 含义: “GC前内存区已使用容量->GC后内存区已使用容量(该内存区域总容量)” |
1
|
[Times: user= 0.03 sys= 0.00 , real= 0.01 secs] 含义:user,sys,real分别表示用户消耗CPU时间、内核消耗CPU时间、操作从开始到结束所经过的墙钟时间(wall clock time)<br>CPU时间与墙钟时间的区别:墙钟时间包括各种非运算等待时间,如IO阻塞等待,而CPU不包括这些时间。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2017-07-09 一致性哈希算法(c#版)
2017-07-09 一致性哈希算法