Gehe Speicherverbrauchsverwaltung

Bin ich neu zu Gehen und zu versuchen herauszufinden, wie es verwaltet Speicher Verbrauch.

Ich habe Probleme mit Speicher in einer meiner test-Projekte. Ich verstehe nicht, warum das Gehen wird mehr und mehr Speicher (keine Freigabe), wenn mein Programm läuft für eine lange Zeit.

Ich bin mit den test-Fall unten. Nachdem die erste Zuordnung, das Programm nutzt fast 350 MB Speicher (laut International Business Machines). Dann versuche ich Sie zu befreien und ActivityMonitor zeigt, dass der Speicherverbrauch verdoppelt. Warum?

Mir läuft dieser code unter OS X mit Go-1.0.3.

Was ist falsch an diesem code? Und was ist der richtige Weg, zu verwalten große Variablen in Go-Programmen?

Hatte ich einen anderen Speicher-management-problem, wenn die Implementierung eines Algorithmus, der verwendet viel Zeit und Speicher; nach läuft es seit einiger Zeit wirft er eine "out of memory" exception.

package main

import ("fmt" 
"time"
)

func main() {
  fmt.Println("getting memory")
  tmp := make([]uint32, 100000000)
  for kk, _ := range tmp {
    tmp[kk] = 0
  }
  time.Sleep(5 * time.Second)
  fmt.Println("returning memory")
  tmp = make([]uint32, 1)
  tmp = nil
  time.Sleep(5 * time.Second)
  fmt.Println("getting memory")
  tmp = make([]uint32, 100000000)
  for kk, _ := range tmp {
    tmp[kk] = 0
  }
  time.Sleep(5 * time.Second)
  fmt.Println("returning memory")
  tmp = make([]uint32, 1)
  tmp = nil
  time.Sleep(5 * time.Second)  
  return
}

InformationsquelleAutor der Frage duganets | 2013-01-29

Schreibe einen Kommentar