我正在使用Red Gates ANTS内存分析器来调试内存泄漏.它一直警告我:
内存碎片可能导致.NET保留过多的可用内存.
要么
内存碎片正在影响可以分配的最大对象的大小
因为我有强迫症,所以必须解决这个问题.
有哪些标准编码实践有助于避免内存碎片.你能通过一些.NET方法对其进行碎片整理吗?它会帮助吗?
我们偶尔会遇到问题,即由于内存分配失败,我们长时间运行的服务器进程(在Windows Server 2003上运行)引发了异常.我们怀疑这些分配是由于内存碎片而失败的.
因此,我们一直在寻找一些可能对我们有帮助的替代内存分配机制,我希望有人可以告诉我最好的一个:
1)使用Windows 低碎片堆
2)jemalloc - 用于Firefox 3
3)Doug Lea的malloc
我们的服务器进程是使用跨平台的C++代码开发的,因此任何解决方案都可以理想地跨平台(do*nix操作系统会遭受这种类型的内存碎片吗?).
另外,我认为LFH现在是Windows Server 2008/Vista的默认内存分配机制吗?如果我们的客户只是升级他们的服务器操作系统,我当前的问题会"消失"吗?