अगर मैं खोलने के लिए और उदाहरणक्या लिनक्स प्लेटफ़ॉर्म पर सॉकेट का उपयोग करते समय कोई फ़ाइल डिस्क्रिप्टर रिसाव है?
Socket s = new Socket(...);
s.setReuseAddress(true);
in = s.getInputStream();
...
in.close();
s.close();
के लिए बुला लिनक्स से एक सॉकेट बंद कहा गया है कि इस सॉकेट अभी भी खुला है या कम से कम कनेक्शन के लिए फ़ाइल वर्णनकर्ता presen है।
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
java 9268 user 5u sock 0,4 93417 can't identify protocol
इस प्रविष्टि बनी हुई है जब तक कार्यक्रम बंद कर दिया है: जब lsof द्वारा इस प्रक्रिया के लिए खुली फ़ाइलों की क्वेरी, वहाँ बंद कनेक्शन के लिए एक प्रवेश है। अंततः सॉकेट को बंद करने का कोई और तरीका है? मैं थोड़ा चिंतित हूं कि मेरा जावा एप्लिकेशन कई फ़ाइल डिस्क्रिप्टरों को अवरुद्ध कर सकता है। क्या यह संभव है? या जावा इन सॉकेट को फिर से उपयोग करने के लिए रखता है, यहां तक कि ReuseAdress सेट है?
सहमत - यह जांच करने वाली पहली बात है। और कुछ मिनटों के बाद, आपके प्रोग्राम को अनिवार्य रूप से समाप्त होने से पहले, सॉकेट को दूर जाना चाहिए। –
लेखक कहता है कि कार्यक्रम बंद होने तक प्रविष्टियां बनी रहती हैं, हालांकि मुझे लगता है कि वह निर्दिष्ट नहीं करता है कि यह कुछ मिनट से अधिक है या नहीं। –
हाँ, मैंने देखा कि "कार्यक्रम बंद हो गया है", लेकिन यह सुनिश्चित नहीं था। –