C++ 进程脏内存太大

C++ 进程脏内存太大,c++,c,memory,C++,C,Memory,我的在线服务有一个问题,进程内存有时会在重新加载后几秒钟内变得太大(2GB或更多,正常进程应该只需要大约300MB的驻留内存),然后它会像其他兄弟进程一样稳定。 我使用pmap-x pid检查内存使用情况,发现分配的一大块驻留脏内存(既私有又共享)。 我尝试使用google tcmalloc替换系统malloc,更改tcmalloc代码,使其在分配内存大小大于5MB时中止: inline void* do_malloc_or_cpp_alloc(size_t size) { /* test */

我的在线服务有一个问题,进程内存有时会在重新加载后几秒钟内变得太大(2GB或更多,正常进程应该只需要大约300MB的驻留内存),然后它会像其他兄弟进程一样稳定。 我使用pmap-x pid检查内存使用情况,发现分配的一大块驻留脏内存(既私有又共享)。 我尝试使用google tcmalloc替换系统malloc,更改tcmalloc代码,使其在分配内存大小大于5MB时中止:

inline void* do_malloc_or_cpp_alloc(size_t size) {
/* test */
if (size >= 1024*1024*5) {
    abort();
}
/* test */
  return tc_new_mode ? cpp_alloc(size, true) : do_malloc(size);
}
然后,我在联机环境中链接了tcmalloc,但当同样的情况再次发生时,无法获取任何核心转储文件


谁能告诉我如何解决这样的问题吗?

这意味着您有很多小型(小于5MB)Malloc。如果你的程序不需要2G内存,可能会出现内存泄漏,这可以由valgrind诊断,而不是tcmalloc。但我的服务需要至少4MB的malloc来初始化。。。5MB是我能设置的最小值,是的,可能是内存泄漏,我试过valgrind,但找不到泄漏的原因。。。