Solaris 进程内存使用量会增加,但不会永远增加
Solaris process memory usage increase but not forever
在 Solaris 10 上,我有一个行为奇怪的多线程进程。它管理复杂的C++结构(RWTVal 或 RWPtr)。这些结构是根据存储在数据库中的数据构建的(使用 Pro*C)。每个小时,该过程都会在数据库中查找新信息,在内存上构建新结构并释放旧数据。但是,每次重复此过程时,进程内存使用量都会增加几 MB (12/16MB)。 进程的内存使用量从 100M 开始,直到接近 1,4G。 到目前为止,该过程似乎存在内存泄漏。但奇怪的行为是,在这一点之后,这个过程停止了,不再继续成长。当我尝试查找内存泄漏(使用净化工具)时,该过程不会增长,也没有显示明显的泄漏。有没有人发现类似的行为或可以解释可能发生的事情?
当您释放内存时,操作系统可能实际上并没有"丢弃"旧的内存页,因为如果操作系统不必分配更多页,应用程序分配更多内存的速度会更快。但当然只能达到极限。
相关文章:
- 数组索引的值没有增加
- 为什么我的代码在输出中增加了93天
- 有效地使用std::unordered_map来插入或增加键的值
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 为什么是谷神星协方差.计算()似乎永远运行而不返回?
- 为什么要增加导致崩溃的指针
- 密码登录程序将永远循环并显示不正确的结果
- 我想在C++中读取一些多个字符,但它永远不会读取第二个字符
- SFML 碰撞永远不会在我的系统中注册
- 增加传递地址的值
- 如何增加以前由新运算符分配的 C++ std::list 数组的大小?
- 为什么"i"在循环的每次迭代中都没有增加?(C++)
- 先进先出:一个进程永远不会从管道读取
- std::thread 增加 DLL 引用计数,从而防止卸载 DLL
- 移动构造函数永远不会被调用
- 如何在C++中为增加但记住删除先前对象的对象分配唯一标识符
- 将一对插入地图并增加计数?
- 整数类型应该显式转换(例如"int"到"无符号")还是只会增加混乱?
- 我的 c++ 应用程序中的运行时间从 0 增加到 60 太快了(例如一毫秒或一微秒)
- Solaris 进程内存使用量会增加,但不会永远增加