我不知道在这里想些什么......
我们有一个作为服务运行的组件.它在我的本地机器上运行得非常好,但是在其他一些机器上(两台机器RAM都等于2GB),它会在第二天和连续几天开始生成bad_alloc异常.问题是该过程的内存使用量保持不变,大约为50Mb级别.另一个奇怪的事情是,通过跟踪消息,我们已经定义了从stringstream对象抛出的异常,该对象只会向流中插入不超过1-2 Kb的数据.如果重要的话,我们正在使用STL-Port.
现在,当你得到一个bad_alloc异常时,你认为这是一个内存泄漏.但是我们所有的手动分配都包含在一个智能指针中.此外,当整个过程仅使用~50Mb(内存使用量每天保持不变(并且肯定不会上升))时,我无法理解stringstream对象如何缺少内存.
我无法为您提供代码,因为项目非常大,抛出异常的部分除了创建字符串流和<<某些数据然后记录它之外别无其他功能.
所以,我的问题是......当进程只使用2GB的50Mb内存时,如何发生内存泄漏/ bad_alloc?还有什么其他的猜测可能是错的?
在此先感谢,我知道这个问题很模糊,我只是有点绝望,我尽力解释这个问题.
我正在运行一个C++程序,它std::bad_alloc在任意点死亡,这取决于指定的输入.以下是关于该计划的一些观察/观点:
std::vector和中std::string;这些库类中的分配失败),因此内存泄漏极不可能.还有什么我应该尝试的吗?任何可以帮助的特定工具?还有其他建议吗?
更新:最后证明虚拟内存已经受到限制ulimit -v.我后来忘了这件事,因此内存耗尽.将其重新设置以unlimited解决问题.