Demande de libération de mémoire dans Go
Question originale :
Comment la mémoire inutilisée, en particulier celle occupée par une variable , être libéré après avoir été traité ?
Description détaillée :
La fonction getURL télécharge les fichiers sous 20 Mo, stockant leur contenu dans une tranche d'octets nommée body. Bien que fonctionnel, cela accumule l'utilisation de la mémoire. L'objectif est de libérer cette mémoire une fois le corps traité.
Réponse complète :
Gestion de la mémoire dans Go :
Go libère automatiquement la mémoire inutilisée. Cependant, le déclenchement d'une version manuelle n'est généralement pas recommandé, car c'est le signe de problèmes potentiels de gestion de la mémoire.
Solutions alternatives :
Pour éviter une consommation inutile de mémoire, considérez ce qui suit approches :
Exemple avec io.Reader :
func processFile(r io.Reader) { // Perform data processing } func getURL(url string) error { resp, err := http.Get(url) if err != nil { return err } defer resp.Body.Close() processFile(resp.Body) return nil }
En passant resp.Body directement à processFile, l'intégralité du contenu du fichier n'est pas stocké en mémoire, libérant des ressources après le traitement.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3