Linux中C应用程序的内存稳定性
我想验证我为Linux编写和编译的C应用程序的内存稳定性. 调查显示Linux没有立即释放内存.所以这是我的问题: 如何强制Linux释放我实际释放的内存?至少我想这样做一次以验证内存稳定性. 最佳答案
你所看到的很可能根本不是内存泄漏.如今,操作系统和malloc / new堆都会对内存进行非常复杂的记忆.总的来说,这是一件非常好的事情.您可能会尝试强制操作系统释放内存,这只会损害您的应用程序性能和整体系统性能.
为了显示: > Heap保留了几个虚拟内存区域供使用.在malloc之前,它们都没有实际提交(由物理内存支持). 那么第二步的记忆现在已经死了吗?不必要.首先,一旦它变得高效,它最终可能会被重复使用.在不重用的情况下,操作系统本身可以使用CPU的虚拟内存功能(TLB)从应用程序下面“重新映射”未使用的内存,并将其分配给另一个应用程序 – 在苍蝇Heap意识到了这一点,并且通常以某种方式管理事物,以帮助提高操作系统重新映射页面的能力. 这些都是宝贵的内存管理技术,具有通过Process Explorer呈现细粒度内存泄漏检测的无限副作用,大多无用.如果要检测堆中的小内存泄漏,则需要使用运行时堆泄漏检测工具.既然你提到你也可以在Windows上构建,我会注意到微软的CRT内置了足够的泄漏检查工具.使用说明见: http://msdn.microsoft.com/en-us/library/974tc9t1(v=vs.100).aspx malloc的开源替代品可用于GCC/C++lang工具链,但我没有直接经验.我认为在Linux上,Valgrind无论如何都是首选且更可靠的泄漏检测方法. (根据我的经验,比MSVCRT Debug更容易使用). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |