मैं एक http पथ के लिए स्थानीय फ़ाइल सिस्टम से एक बड़ी वीडियो/छवि फ़ाइल को प्रकाशित करने की कोशिश कर रहा हूँ, लेकिन मैं कुछ समय के बाद स्मृति त्रुटि के बाहर एक में चलाने ...OutputStream OutOfMemoryError जब HTTP
यहाँ भेज रहा है कोड
public boolean publishFile(URI publishTo, String localPath) throws Exception {
InputStream istream = null;
OutputStream ostream = null;
boolean isPublishSuccess = false;
URL url = makeURL(publishTo.getHost(), this.port, publishTo.getPath());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
if (conn != null) {
try {
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("PUT");
istream = new FileInputStream(localPath);
ostream = conn.getOutputStream();
int n;
byte[] buf = new byte[4096];
while ((n = istream.read(buf, 0, buf.length)) > 0) {
ostream.write(buf, 0, n); //<--- ERROR happens on this line.......???
}
int rc = conn.getResponseCode();
if (rc == 201) {
isPublishSuccess = true;
}
} catch (Exception ex) {
log.error(ex);
} finally {
if (ostream != null) {
ostream.close();
}
if (istream != null) {
istream.close();
}
}
}
return isPublishSuccess;
}
यहाँ त्रुटि मैं हो रही है,
Exception in thread "Thread-8773" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2786)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:94)
at sun.net.www.http.PosterOutputStream.write(PosterOutputStream.java:61)
at com.test.HTTPClient.publishFile(HTTPClient.java:110)
at com.test.HttpFileTransport.put(HttpFileTransport.java:97)
कुछ (मेरे साथ) इसे क्रॉसपोस्ट के लिए कठोर समझते हैं: http://forums.sun.com/thread.jspa?threadID=5424210 विशेष रूप से जब आप इस तथ्य का भी उल्लेख नहीं करते हैं। –
कृपया उस संपादन पर अपराध न करें जहां मैंने आपके कोड की आलोचना की थी। यह औसत से बेहतर है, लेकिन इसमें सुधार के लिए जगह है। सभी गैर-तुच्छ कोड करता है। और अपवाद हैंडलिंग को गड़बड़ करना आसान है: मुझे एक सप्ताह या उससे पहले एक अच्छी तरह से योग्य -1 मिल गया था जब मैंने बस एक उदाहरण में टाइप किया था, तो मेरे कंपाइलर को चेक किए बिना कोशिश/पकड़/अंत में। – kdgregory