मैं कुछ जावा फ़ाइल हैंडलिंग कोड के लिए परीक्षण लिख रहा हूं और यह सुनिश्चित करना चाहता हूं कि सभी फाइलें ठीक से बंद हो जाएं। मैं 'lsof' नहीं चलाना चाहता क्योंकि इससे अधिक फाइलें खुल जाएंगी और टेस्ट सूट गैर-पोर्टेबल बन जाएगी। किसी को ऐसा करने का कोई तरीका पता है?क्या यह पता लगाने के लिए एक पोर्टेबल तरीका है कि वीएम के अंदर से जेवीएम कितनी फाइलें खुलती है?
उत्तर
यदि आप जेडीके का हिस्सा कुछ ढूंढ रहे हैं, तो जवाब नहीं है।
आपको कुछ ऐसा लगता है जो JVMTI का उपयोग करता है, लेकिन यह पोर्टेबल नहीं होगा (यह एक मूल इंटरफ़ेस है)। या कुछ ऐसा जो JPDA का उपयोग करता है, लेकिन उसे दूसरी JVM की आवश्यकता होगी। मैं आपको गुगलिंग के लिए शुरुआत के रूप में उन दो शब्दकोष देता हूं।
आप में JVM चलाने के लिए और पोर्टेबल होना चाहते हैं, तो आप अपनी फ़ाइल संदर्भ के लिए एक कारखाने पेश करने का होगा: सभी new FileInputStream()
, new FileOutputStream()
, new RandomAccessFile()
, new FileReader
, और new FileWriter
कि कारखाने वस्तु पर तरीकों के साथ कॉल की जगह। यह कारखाना इन वस्तुओं के उप-वर्गों को वापस कर देगा, जिनके पास close()
विधि ओवरराइड है। यह एक "खुली फाइल" काउंटर भी बढ़ाएगा, जिसे तब ओवरराइड close()
द्वारा घटाया जाता है।
फैक्ट्री विधियों और काउंटर को स्थैतिक और सिंक्रनाइज़ करने की आवश्यकता होगी (जब तक कि आप कारखाने को इंजेक्ट नहीं करना चाहते), और यह तय करने के लिए सिस्टम प्रॉपर्टी का उपयोग करना चाहिए कि उप-वर्गीकृत स्ट्रीम या जेडीके संस्करण को वापस करना है या नहीं।
व्यक्तिगत रूप से, मैं टिप्पणी में सलाह लेता हूं, और पहले FindBugs का उपयोग करता हूं।
- 1. यह पता लगाने के लिए कि क्या जेएमएस कनेक्शन है?
- 2. यह पता लगाने के लिए कि मेरे जेवीएम द्वारा क्या एल्गोरिदम [एन्क्रिप्शन] समर्थित है?
- 3. क्या यह पता लगाने का कोई तरीका है कि वर्तमान में एनीमेशन के दौरान कितनी डिग्री एक घूर्णन घूमती है?
- 4. यह पता लगाने के लिए कि विंडोज
- 5. यह पता लगाने के लिए कि मेमोरी लीक कहां है?
- 6. यह पता लगाने के लिए कि मेरी साइट कहां है
- 7. यह पता लगाने का सबसे तेज़ तरीका है कि जावास्क्रिप्ट
- 8. यह पता लगाने के लिए कि क्या स्पिइट को pygame
- 9. यह पता लगाने के लिए कि क्या NSScrollView वर्तमान में
- 10. .chosen.change() - यह पता लगाने के लिए कि क्या यह एक चुनिंदा या अचयनित कार्रवाई है
- 11. जावास्क्रिप्ट यह पता लगाने के लिए कि क्या उपयोगकर्ता टैब
- 12. क्या रेसपर में कोई लॉगिंग है यह पता लगाने के लिए कि परीक्षण अनिश्चित क्यों है?
- 13. यह पता लगाने के लिए कि क्या विंडोज सी #
- 14. यह पता लगाने के लिए कि क्या PHP चर एक संदर्भ/संदर्भित है
- 15. यह पता लगाने के लिए कि क्या एक्शनमोड पहले से मौजूद है
- 16. क्या यह पता लगाने का कोई तरीका है कि कक्षा में कक्षा को कितनी बार तत्काल बनाया गया है?
- 17. यह पता लगाने के लिए कि एक चल रही लिनक्स मशीन निष्क्रिय है या नहीं
- 18. क्या पोर्टेबल वीएम बनाना संभव है?
- 19. यह पता लगाने के लिए कि लेनदेन पहले से ही शुरू हो चुका है?
- 20. यह पता लगाने के लिए कि क्या कोई निश्चित पॉइंट 3 डी कैमरा दृश्य सीमाओं के अंदर है?
- 21. यह पता लगाने के लिए कि वर्चुअल मशीन पर स्क्रिप्ट चल रही है या नहीं?
- 22. यह पता लगाने के लिए कि क्या स्ट्रिंग में एक नई लाइन ब्रेक है?
- 23. यह पता लगाने के लिए कि कोई उपयोगकर्ता PHP
- 24. क्या यह पता लगाने का कोई तरीका है कि उपयोगकर्ता के पास प्रक्रिया के task_struct से कोई प्रक्रिया है?
- 25. क्या यह आईपैड का पता लगाने का सही तरीका है?
- 26. यह पता लगाने के लिए कि कोई फ़ाइल बैच फ़ाइल
- 27. यह पता लगाने के लिए कि किसी ऑब्जेक्ट को
- 28. यह पता लगाने के लिए कि जावा जावास्क्रिप्ट
- 29. यह पता लगाने के लिए कि HTML5 वीडियो इनलाइन
- 30. यह पता लगाने के लिए कि एक नियंत्रण स्थानांतरित किया जा रहा है?
यह भी देखें: http://stackoverflow.com/questions/1661322/too-many-open-file-handles – Puce