- 3
- 0
- 约1.61万字
- 约 15页
- 2026-05-28 发布于河北
- 举报
携程.NET高级工程师面试题及详细答案
一、基础核心(底层原理,必问)
1.请详细说说.NETGC的工作原理,分代回收机制,以及携程这类高并发场景下,如何排查和解决GC导致的性能问题?
答案:
首先,GC是CLR的核心组件,核心作用是自动管理托管内存,回收不再被引用的对象,避免内存泄漏,核心流程分三步:标记(从根对象出发,遍历标记可达对象)、清除(回收未标记的垃圾对象)、压缩(移动可达对象,消除内存碎片,大对象除外)。
分代回收机制,是基于“大部分新对象生命周期短、老对象生命周期长”的特点设计的,托管堆分为3代:Gen0(新创建对象,生命周期最短,回收频率最高、速度最快,比如临时变量)、Gen1(Gen0回收后幸存的对象,过渡代,回收频率低)、Gen2(Gen1回收后幸存的对象,生命周期最长,比如单例、全局缓存,回收频率最低、开销最大);另外大对象(默认85000字节)直接分配在大对象堆(LOH),不参与压缩,避免移动开销。
携程场景(比如酒店秒杀、机票预订峰值)下,GC常见问题是频繁FullGC(Gen2回收)导致服务卡顿,排查和解决思路如下(实战落地,不是理论):
1.排查工具:优先用dotnet-dump(轻量,线上可直接采集)、WinDbg(深入分析堆内存),重点看GC日志(开启GC日志,记录回收频率、耗时、各代对象占比);
2.常见问题场景及解决:
(1)
原创力文档

文档评论(0)