C++ google perftools显示std::string::_Rep::_S_create正在使用20gb的内存
我正在使用Google Perf工具分析我的程序,发现std::string::_Rep:_S_create上的内存不足。性能工具显示正在使用的20gb:C++ google perftools显示std::string::_Rep::_S_create正在使用20gb的内存,c++,memory,C++,Memory,我正在使用Google Perf工具分析我的程序,发现std::string::_Rep:_S_create上的内存不足。性能工具显示正在使用的20gb: 20526.0 92.1% 92.1% 20526.0 92.1% std::string::_Rep::_S_create 有人知道这可能是什么吗?到目前为止,我发现: 建议std::string分配器可以获取大块内存以避免调用new 由于exit()或类似的调用,无法调用std::string析构函数。到目前为止,我还没有在我的
20526.0 92.1% 92.1% 20526.0 92.1% std::string::_Rep::_S_create
有人知道这可能是什么吗?到目前为止,我发现:
编辑:
通过我将libstdc++移动到共享并启用了GLIBCXX_FORCE_NEW,这似乎解决了这个问题。我仍然不清楚为什么这个问题会首先发生。有人有主意吗?也许你有很多非常大的字符串?这看起来像是read by
pprof--text
的输出。如果是这样,pprof--gv
将为您提供调用图视图。将其与定期堆分配转储结合起来,以确定何时何地发生这种情况。我能以某种方式查看图形显示吗?当我尝试时,它会抱怨无法打开图形显示。您可以将调用图转储为您选择的格式:pprof--pdf
,例如,将pdf
输出写入stdio
。查看pprof--help
了解更多文件格式。