在Solaris 10上,我有一个具有奇怪行为的多线程进程。它管理复杂的C++结构(RWTVal或RWPtr)。这些结构是根据存储在数据库中的数据(使用Pro * C)构建的。流程每小时都会在数据库中寻找新的信息,在内存中建立新的结构,并释放旧数据。但是,每次重复此过程,进程的内存使用量都会增加几MB(12 / 16MB)。进程的内存使用量从100M开始,直到1,4G。到目前为止,似乎该进程存在内存泄漏。但是奇怪的是,在此之后,该过程停止了,并继续增长。当我尝试查找内存泄漏(使用Purify工具)时,该过程没有增长,也没有显示出明显的泄漏。有没有人发现类似的行为或可以解释可能发生的情况?
最佳答案
释放内存时,操作系统可能实际上并未“丢弃”旧的内存页面,因为如果OS不必分配更多的页面,则应用程序可以更快地分配更多的内存。但只能达到上限。
关于c++ - Solaris进程内存使用量增加,但并非永久增加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19675610/