भरें मुझे कुछ जेएमएक्स निगरानी स्क्रिप्ट्स का परीक्षण करने की आवश्यकता है, विशेष रूप से मैं यह सत्यापित करना चाहता हूं कि परमजेन क्षेत्र की मेरी निगरानी काम कर रही है। इसलिए इसका परीक्षण करने के लिए मैं कुछ कोड चलाने में सक्षम होना चाहता हूं जो कि पर्मजेन का उपभोग करने के लिए कक्षाओं की एक बड़ी संख्या को लोड करता है।प्रोग्रामेटिक रूप से जेवीएम स्थायी जेनरेशन (पर्मजेन) मेमोरी क्षेत्र
मेरे वर्तमान योजना एक स्क्रिप्ट उत्पन्न करने के लिए prefix(1..n).java
उन्हें संकलन लिखने के लिए है और फिर क्यू चलाने पर:
for(int i=1 ; i < n ; i ++){
Class.forName("com.mypackage.prefix"+i);
}
वहाँ इस लक्ष्य को हासिल करने के लिए एक और अधिक सुरुचिपूर्ण समाधान है?
मुझे लगता है कि यदि आप एक नया classloader का दृष्टांत और अधिक से अधिक एक ही कक्षा लोड करते हैं, यह विभिन्न वर्गों की टन बनाने के लिए आवश्यकता के बिना अपने लक्ष्य तक पहुंच जाएगा। वैकल्पिक रूप से, मुझे लगता है कि String.intern() भी आपके PermGen स्पेस को –
@Guillaume भर सकता है: यह एक उत्तर है, टिप्पणी नहीं! –
@ टॉम, हाँ और नहीं क्योंकि मुझे इस बारे में निश्चित नहीं है, इसलिए यह एक सुझाव है। मैं इस पर सकारात्मक दिखना नहीं चाहता हूं। ;-) –