所以我有一个用 C++ 编写的应用程序,在 Ubuntu 12.04 上运行,它最初从数据库中读取一些数据,然后监视一个目录中的文件。当它们出现时,它会处理它们,然后将一些数据写回数据库。随着时间的推移,cpu 使用量逐渐增加,大约每天 5%,但内存使用量保持不变。逻辑上它看起来像这样:
-open db connect
-while(keep_running())
- check dir for new files (I know - it should use the watch system and callbacks, but..)
- process files
- (possibly) update db
-end while
-close db connect
在您发出 SIGINT 信号之前,keep_running() 始终为真
代码并没有那么复杂,所以我对 cpu 的使用感到茫然 - callgrind 看起来不错。我怀疑数据库连接,但在其他类似的应用程序中并没有表现出这种行为。我的下一步是将 valgrind 附加到一个进程并让它运行几天 - 同时,我还能尝试什么?