क्या सत्र में संग्रहीत प्रत्येक डेटा प्रकार (प्रत्येक ऑब्जेक्ट से बना है) के आकार को प्रोग्रामेटिक रूप से मापने के अलावा इसे मापने का एक साफ और आसान तरीका है?HttpSession ऑब्जेक्ट का आकार मापने
उत्तर
एक सत्र आकार वर्ग here है जिसमें Java Web Parts lib का एक हिस्सा, इसे पास किए गए HttpSession ऑब्जेक्ट के आकार को वापस करने के लिए एक फ़ंक्शन है।
सत्र सामग्री Serializable होना चाहिए। तो इसे क्रमबद्ध करें और परिणामी बाइट सरणी के आकार को देखें।
यह इन-मेमोरी आकार के बराबर नहीं है, लेकिन इसका एक मोटा प्रतिनिधित्व के रूप में उपयोग किया जा सकता है।
पीएस ध्यान दें कि क्षणिक फ़ील्ड, यदि कोई हो, को बाहर रखा जाएगा।
MessAdmin आपको HttpSession आकार की गणना करने की अनुमति देता है हालांकि यह अस्पष्ट है कि यह calculates the size of transient objects पर कैसे है।
ऐसा प्रतीत होता है कि एचटीपीएसशन ऑब्जेक्ट का अनुमानित आकार उत्पादन में व्यर्थता का एक अभ्यास है, और किसी को नियंत्रित वातावरण के लिए एक अधिक सटीक आकार प्राप्त होने की संभावना है।
ध्यान देने योग्य एक बात यह है कि सीरियलाइज्ड सत्र ऑब्जेक्ट का आकार वर्ण एन्कोडिंग में बदलावों के कारण गलत है - जावा में स्ट्रिंग्स यूटीएफ -16 प्रारूप में संग्रहीत हैं जबकि आउटपुट स्ट्रीम एक अलग एन्कोडिंग में हो सकती है। जावा में किसी ऑब्जेक्ट के आकार की गणना करने के बारे में अधिक जानकारी एक समस्या है, इस JavaWorld article में पाया जा सकता है।
मैं इसे वेब अनुप्रयोग में स्ट्रैट्स -2 फ्रेमवर्क और वसंत 3.4 के साथ ऑब्जेक्ट कंटेनर के रूप में उपयोग कर रहा हूं, मैं सत्र का आकार हमेशा -1 है जिसका अर्थ है कि यह सत्र में ऑब्जेक्ट्स के आकार की गणना नहीं कर सकता है। –
@ एलीरेज़ा फट्टाही मैंने एक ही मुद्दे से संघर्ष किया है। और अंततः मुझे पता चला कि आपको सत्र विशेषताओं के आकार को प्राप्त करने के लिए MessAdmin-Core और MessAdmin-AutoProb के अतिरिक्त MessAdmin-SizeOf प्लगइन का उपयोग करने की आवश्यकता है। आप MessAdmin-Serializable भी जोड़ना चाह सकते हैं। – magicbacon
सत्र विशेषताएँ ** ** को सीरियलज़ेबल होना चाहिए (जैसा कि "ऐसा करने के लिए यह एक अच्छा अभ्यास है"); लेकिन वे ** ** होने के लिए नहीं है। – ChssPly76
सत्र क्रमबद्धता डिस्क पर निष्क्रिय सत्रों को सहेजकर स्मृति को सहेजने का एक प्रभावी तरीका है। अगर Erlanged में गैर-धारावाहिक सत्र वाला ऐप है, तो यह अविश्वसनीय सत्र के आकार को मापने के बजाय ठीक करने की पहली बात है। –
पुन: चाहिए/चाहिए: कंटेनर को Serializable वस्तु स्वीकार करनी चाहिए, और दूसरों को स्वीकार कर सकते हैं। यह किसी भी non-serializable पर IllegalArgumentException भी फेंक सकता है। मैं कहूंगा कि सीरियलज़ेबल बहुत ही जरूरी है, एक वेब-टोल-यू-एसओ तरीके से। –