हम एक आरईएसटी एपीआई लागू करने के लिए HTTPClient का उपयोग कर रहे हैं।स्ट्रीम बनाम स्ट्रिंग के रूप में इनपुट पढ़ने के लिए यह अधिक मेमोरी कुशल क्यों है?
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.
docs पर जाने के कहने के लिए:
method = new PostMethod(url);
HttpClient client = new HttpClient();
int statusCode = client.executeMethod(method);
String responseBody = method.getResponseBodyAsString();
जब हम ऐसा करते हैं तो हम इस चेतावनी मिलती है:
हम सर्वर प्रतिक्रिया का उपयोग कर पढ़ रहे हैं
HttpClient कुशल अनुरोध/प्रतिक्रिया शरीर स्ट्रीमिंग करने में सक्षम है। बड़ी इकाइयों को स्मृति में buffered किए बिना सबमिट या प्राप्त किया जा सकता है। यह विशेष रूप से महत्वपूर्ण है यदि एकाधिक HTTP विधियों को समवर्ती रूप से निष्पादित किया जा सकता है। स्ट्रिंग्स या बाइट सरणी जैसे इकाइयों से निपटने के लिए सुविधाजनक विधियां हैं, उनका उपयोग निराश है। जब तक सावधानीपूर्वक उपयोग नहीं किया जाता है, तो वे आसानी से मेमोरी स्थितियों से बाहर निकल सकते हैं, क्योंकि वे स्मृति में पूर्ण इकाई का बफरिंग करते हैं।
तो मेरे सवाल है, यदि आप एक स्ट्रिंग के रूप में पूरा प्रतिक्रिया की जरूरत है (यानी: एक DB में स्टोर करने के लिए, या डोम का उपयोग कर पार्स करने के लिए), कारण है कि यह अधिक स्मृति कुशल एक धारा का उपयोग करने के लिए है?