Pourquoi est-il plus efficace en mémoire de lire les entrées sous forme de stream plutôt que sous forme de chaîne?

Nous utilisons HTTPClient pour implémenter une API REST.

Nous lisons la réponse du serveur en utilisant:

method = new PostMethod(url); HttpClient client = new HttpClient(); int statusCode = client.executeMethod(method); Ssortingng responseBody = method.getResponseBodyAsSsortingng(); 

Lorsque nous faisons cela, nous obtenons cet avertissement:

 Dec 9, 2009 7:41:11 PM org.apache.commons.httpclient.HttpMethodBase getResponseBody WARNING: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended. 

Les docs continuent en disant:

HttpClient est capable de diffuser efficacement le corps des requêtes / réponses. Les grandes entités peuvent être soumises ou reçues sans être mises en mémoire tampon. Ceci est particulièrement critique si plusieurs méthodes HTTP peuvent être exécutées simultanément. Bien qu’il existe des méthodes pratiques pour traiter avec des entités telles que des chaînes ou des tableaux d’octets, leur utilisation est déconseillée. Si elles ne sont pas utilisées soigneusement, elles peuvent facilement conduire à des conditions de mémoire insuffisante, car elles impliquent la mise en mémoire tampon de l’entité complète en mémoire.

Ma question est donc la suivante: si vous avez besoin de la réponse complète sous forme de chaîne (par exemple, pour stocker dans une firebase database ou pour parsingr à l’aide de DOM), pourquoi l’utilisation d’un stream est-elle plus efficace en termes de mémoire?