¿Liberando memoria no utilizada?

Estoy usando la siguiente función para descargar archivos de menos de 20 MB. Lee todo el contenido en la memoria ya que otra función tiene que realizar el trabajo en los bytes antes de que pueda escribirse en el disco.

func getURL(url string) ([]byte, error) {
    resp, err := http.Get(url)
        if err != nil {
            return nil, fmt.Errorf("getURL: %s", err)
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
            return nil, fmt.Errorf("getURL: %s", err)
    }

    return body, nil
}

Esto funciona bien, pero toda la memoria se consume en el sistema.

¿Es posible liberar la memoria utilizada porbody después de que haya sido procesada por otra función, ¿entonces el uso de la memoria no será mayor que los bytes que se procesan actualmente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta