Sobes.tech
Junior — Middle

Hoe systematiseren we de situatie waarin een geheugenaanvraag succesvol is, maar er niet genoeg middelen zijn om deze te leveren?

sobes.tech AI

Antwoord van AI

In Go, wanneer het verzoek om geheugen toe te wijzen (bijvoorbeeld via make of new) succesvol wordt uitgevoerd, maar er daadwerkelijk niet genoeg bronnen beschikbaar zijn voor volledig gebruik, ontstaat meestal een situatie gerelateerd aan geheugen tekort of fragmentatie.

Om dergelijke gevallen te systematiseren, kun je:

  • Fouten afhandelen die door geheugen toewijzingsfuncties worden geretourneerd, indien aanwezig (hoewel new en make meestal geen fouten retourneren, maar panic bij kritieke tekortkomingen).
  • Gebruik maken van profiling en geheugenmonitoring (pprof, runtime.MemStats) om het resourcegebruik te volgen.
  • In geval van panic door geheugen tekort, recover gebruiken om te handelen en te loggen.

Voorbeeld van panic-afhandeling bij geheugen tekort:

func safeAlloc() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Geheugen niet toegewezen:", r)
        }
    }()
    _ = make([]byte, 1<<40) // poging om een zeer grote slice toe te wijzen
}

Op deze manier komt de systematisering neer op een juiste foutafhandeling en geheugenstatusmonitoring in de applicatie.