这个对象是一个 std::vector<boost::circular_buffer>,我建了几千个这种对象,在 new 时检查内存,大概会增加占用了 10G 内存。
但随后 delete 这些对象,内存却没有释放。导致程序多来回几次之后占用上白 G 内存然后就挂了。
不知道有人遇到过同样的案例没?
系统:ubuntu 16.04, gcc 5.4, boost 1.0.0.68 。
检查程序实时占用的内存我是看 /proc/self/status 的 VmRSS: 那一行。写了一个函数在 new 和 delete 前后实时获取和显示这个值。
还有一个奇怪的现象,上面占用内存是在程序多调用了一个模块( dlopen 了一个 so 文件)后才会出现。如果没有那个模块,内存增减都是正常的。而这个模块,里面并未操作这些对象。