Linux 下 C++ 程序出现严重卡顿,通常不是单一原因,而是“系统资源 + 程序行为 + 编译/运行环境”共同作用的结果。下面按最常见 → 较少见的系统化梳理,并给出排查方法。
top / htop 看到高 CPU 使用while (true) {
// 没有 sleep / 没有退出条件
}
while + 无阻塞top
htop
perf top
✅ 解决:
sleep / 使用条件变量malloc / new 很慢new/deletevalgrind --tool=memcheck ./your_app
✅ 解决:
std::vector / std::unique_ptriostat / iotop 显示磁盘 100%cin >> / cout << 大量使用std::cout << "debug" << std::endl; // 每次 flush
iotop
iostat -x 1
✅ 解决:
"\n" 代替 std::endlstd::mutex m;
m.lock();
// 大量代码
m.unlock();
perf lock
✅ 解决:
std::atomicnice -n 10 ./app
✅ 解决:
while(true) 占满 quotafree -h
vmstat 1
✅ 解决:
-O0✅ 解决:
g++ -O2 -DNDEBUG
✅ 解决:
ldd ./app
dlopenusleep(0) 错误用法✅ 解决:
top
htop
iotop
perf top
strace -c ./app
如果你愿意,可以直接贴:
我可以直接帮你定位是哪一类卡顿,并给出改法。