इसे उपयोग करने के लिए और बड़ी मात्रा में मेमोरी को कुशलतापूर्वक आवंटित करने के लिए उपयोग करें, जैसे कि आपके अपने स्वयं के voxel इंजन में! (यानी Minecraft शैली खेल।)
मेरे अनुभव में, JVM अक्सर सीमा-जाँच को समाप्त करने में असमर्थ है, जिसकी आपको वास्तव में आवश्यकता है। उदाहरण के लिए, यदि आप एक बड़े सरणी पर पुनरावृत्ति कर रहे हैं, लेकिन वास्तविक मेमोरी एक्सेस लूप में एक नॉन-वर्चुअल * मेथड कॉल के नीचे टिकी हुई है, तो JVM अभी भी एक बार पहले की बजाय प्रत्येक ऐरे एक्सेस के साथ सीमा जाँच कर सकता है। सूचित करते रहना। इस प्रकार, संभावित बड़े प्रदर्शन लाभ के लिए, आप JVM सीमा-जाँच को एक विधि के माध्यम से लूप के अंदर समाप्त कर सकते हैं, जो कि sun.misc.Unsafe को सीधे मेमोरी तक पहुँचने के लिए नियत करता है, जिससे किसी भी सीमा-जाँच को सही स्थानों पर करना सुनिश्चित होता है। (आप कुछ स्तर पर सही जाँच कर रहे हैं?)
* गैर-आभासी द्वारा, मेरा मतलब है कि जेवीएम को गतिशील रूप से हल नहीं करना चाहिए जो भी आपकी विशेष विधि है, क्योंकि आपने सही ढंग से गारंटी दी है कि क्लास / मेथड / इंस्टेंस में स्टेटिक / फ़ाइनल / व्हाट्स-यू-यू के कुछ संयोजन हैं।
मेरे घरेलू-विकसित स्वर इंजन के लिए, इसने चंक पीढ़ी और क्रमांकन के दौरान एक नाटकीय प्रदर्शन हासिल किया (iow स्थानों पर जहां मैं एक बार में पूरे सरणी को पढ़ / लिख रहा था)। परिणाम भिन्न हो सकते हैं, लेकिन यदि सीमा-उन्मूलन की कमी आपकी समस्या है, तो यह इसे ठीक कर देगा।
इसके साथ कुछ संभावित प्रमुख समस्याएं हैं: विशेष रूप से, जब आप अपने इंटरफ़ेस के ग्राहकों को सीमा-जाँच के बिना मेमोरी तक पहुंचने की क्षमता प्रदान करते हैं, तो वे संभवतः इसका दुरुपयोग करेंगे। (यह न भूलें कि हैकर्स आपके इंटरफ़ेस के क्लाइंट भी हो सकते हैं ... विशेष रूप से जावा में लिखे गए एक voxel इंजन के मामले में।) इस प्रकार, आपको या तो अपने इंटरफ़ेस को इस तरह से डिज़ाइन करना चाहिए कि मेमोरी एक्सेस का दुरुपयोग न हो, या इससे पहले कि आप यह कभी, कर सकते हैं उपयोगकर्ता के डेटा को मान्य करने के लिए अत्यंत सावधान रहना चाहिए कभी अपने खतरनाक इंटरफेस के साथ आपस में मिलना। एक हैकर अनियंत्रित मेमोरी एक्सेस के साथ कर सकता है भयावह चीजों को देखते हुए, संभवतः दोनों दृष्टिकोणों को लेना सबसे अच्छा है।