0
private float FreeMemory
{
    get { return _nFreeMemory; }
    set
    {
        _nFreeMemory = value;
        statusBarPanelMem.Text = _nFreeMemory + " MB prosto";
    }
}

private int CPUUsage
{
    get { return _nCpuUsage; }
    set
    {
        _nCpuUsage = value;
        statusBarPanelCPU.Text = "CPU poraba " + _nCpuUsage + "%";
    }
}

それから私はタイマーを使って電話をかけています

private void InitialiseCounterRamNetwork()
{
    _cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total", true);
    _ramCounter = new PerformanceCounter("Memory", "Available MBytes", true);
}

private void timerMemProcNetwork_Tick(object sender, EventArgs e)
{
   FreeMemory = _ramCounter.NextValue();
   CPUUsage = Convert.ToInt32(_cpuCounter.NextValue());
}

しかし、これが原因で、メモリリークとシステムのメモリ不足の例外が発生します。GCがこれを収集しないのはなぜですか?

4

1 に答える 1

1

再現できません (Fx 4.5)。

リストされたコードは、メモリ リークを引き起こしません。

于 2012-02-16T00:00:32.067 に答える