में एफटीपी अपलोड धीमा क्यों है मैं पूछना चाहता हूं कि कोई भी एफ़टीपी के साथ किसी भी जावा 7 मुद्दों के बारे में जानता है या नहीं? मैंने सूर्य नेट और अपाचे कॉमन्स नेट लाइब्रेरी दोनों का उपयोग किया है और दोनों जावा 6 पर अपेक्षित प्रदर्शन करते हैं। लेकिन जब मैं अपने देव पर्यावरण (ग्रहण) को 1.7 पर स्विच करता हूं, वही ऑपरेशन वास्तव में धीमा (लगभग 4.5 से 8 केबी/एस) करता है, और ये स्थानीयहोस्ट सर्वर और LAN के भीतर एक अन्य सर्वर के लिए हैं।जावा 7
मैंने buffered धाराओं, बाइट-टू-बाइट स्थानांतरण, नागल एल्गोरिदम बंद करने और अपाचे सुविधा विधि storeFile() का उपयोग करने की कोशिश की है, अंततः अंततः स्थानीयहोस्ट पर गति करने के लिए प्रदर्शन कर रहा है लेकिन फिर से क्रॉल करने के लिए धीमा कर रहा है एक दूरस्थ सर्वर पर। मैं सभी मशीनों को राज्य भर में एफ़टीपी फ़िल्टरिंग बंद करने के लिए भी सेट करता हूं।
InputStream is = null;
OutputStream os = null;
try {
is = new BufferedInputStream(prepareInputStream(data));
os = new BufferedOutputStream(prepareOutputStream(data));
if (is == null || os == null) {
log.error("Can't build connection");
return;
}
byte[] buf = new byte[4096];
int c = 1;
while (c > 0) {
c = is.read(buf);
if (c > 0)
os.write(buf, 0, c);
data.incrCurrentPosition();
fireStateChanged(data);
}
data.incrCurrentPosition();
} catch (IOException e) {
log.error(e.getMessage(), e);
setEnabled(false);
} catch (Exception e) {
log.error(e.getMessage(), e);
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
जैसा देखा जा सकता है, यह बहुत मानक कार्यान्वयन कोड है। फिर, जावा 6 में, चीजें वास्तव में जल्दी से ज़िप। जावा 7 में, यह सूर्य और अपाचे कॉमन्स पुस्तकालय दोनों के लिए 10 से 20 के कारक से धीमा हो जाता है। फ़ाइलज़िला जैसे एफ़टीपी क्लाइंट का उपयोग करना पुष्टि करता है कि एफ़टीपी सामान्य रूप से काम कर रहा है, इसलिए मुझे लगता है कि यह वास्तव में जावा 7 के साथ कुछ करने के लिए है। मैंने किसी समस्या के किसी भी उल्लेख के लिए ऑनलाइन तक खोद दिया लेकिन ज्यादातर, जो चीजें मैंने देखी थीं जावा 7 और विंडोज 7 फ़ायरवॉल संघर्ष।
किसी भी अंतर्दृष्टि के लिए अग्रिम धन्यवाद।
प्रश्न: "मुझे लगता है कि यह वास्तव में जावा 7 के साथ कुछ करने के लिए है"। ए: मुझे सच में लगता है कि आप शायद सही हैं। जावा 6 के लिए संकलन करने का प्रयास करें, और जेआरई 6 और जेआरई 7 दोनों पर * समान * .class चलाने का प्रयास करें। मैं शर्त लगाऊंगा कि आप शायद अपने सिद्धांत की पुष्टि करें :) – paulsm4
'डेटा' की कक्षा क्या है? – DWright
खेद है कि मैं इस DWright को याद किया। मैंने हैंश मैप किए गए ऑब्जेक्ट्स से स्ट्रिंग्स तक मनमाने ढंग से डेटा प्रकारों की कोशिश की है, यह देखने के लिए कि क्या यह वास्तव में कारण था, लेकिन वे सभी जावा 6 में तेज और जावा 7 में धीमे हो गए। –