是什么导致释放内存的这些高峰?

时间:2016-04-22 18:34:16

标签: c# virtual-memory

Chart of available virtual memory in bytes

这是一个可用虚拟内存的图表,以字节为单位,用于我正在进行原型设计的小型应用程序。应用程序在紧密循环中运行,该循环在链表的末尾添加一个整数。如果剩余一定百分比的虚拟内存,则转到循环的开头,否则退出。是什么导致图中这六个位置的虚拟内存突然增加?我的第一个想法是垃圾收集,但是因为我在链接列表中添加了新元素而没有删除任何内容,所以不应该有任何未使用的引用来清理,当然不是那些大量的。最后的跳跃超过了千兆字节的三分之一。这是一个为x86编译但在.NET 4.5下的x64机器上运行的应用程序。很抱歉,如果这是重复的,我不知道该怎么称呼该事件,所以很难搜索它。

编辑:我无法提供确切的代码,但此代码确实展示了我所看到的内容。

public void DoIt()
{
    ComputerInfo ci = new ComputerInfo();
    double memory = 0;
    double count = 0;
    for (int i = 0; i < 2; i ++)
    {
        Console.WriteLine(ci.AvailableVirtualMemory);
        try
        {
            while (true)
            {
                list.AddFirst(892);
                count++;
            }
        }
        catch (OutOfMemoryException)
        {
            memory = ci.AvailableVirtualMemory;
            list.Clear();
            list = null;
            System.GC.Collect();
            list = new LinkedList<int>();
            Console.WriteLine(memory);
            Console.WriteLine(count);
            count = 0;
        }
    }
}

0 个答案:

没有答案