1

在 Solaris 10 上,我有一个行为奇怪的多线程进程。它管理复杂的 C++ 结构(RWTVal 或 RWPtr)。这些结构是根据存储在数据库中的数据构建的(使用 Pro*C)。该过程每小时在数据库中查找新信息,在内存上构建新结构并释放旧数据。但是,每次重复此过程时,进程内存使用量都会增加几 MB(12/16MB)。进程的内存使用量从 100M 开始,直到接近 1.4G。到目前为止,似乎该进程存在内存泄漏。但奇怪的行为是,在这一点之后,这个过程停止了继续成长。当我尝试查找内存泄漏(使用 Purify 工具)时,进程没有增长,也没有显示出明显的泄漏。有没有人发现类似的行为或可以解释可能发生的事情?

4

1 回答 1

1

当您释放内存时,操作系统可能实际上并没有“丢弃”旧的内存页面,因为如果操作系统不必分配更多页面,应用程序分配更多内存会更快。但当然只能达到极限。

于 2013-10-30T06:58:00.260 回答