2009-05-01 4 views
12

बनाए गए ऑब्जेक्ट्स की ट्रैक संख्या मैं एंड्रॉइड के लिए एक गेम पोर्ट कर रहा हूं (इसमें बहुत सारे कोड हैं और इसमें से बहुत कम मेरा है), और DalvikVM कचरा संग्रह के बारे में मुझे (लॉगकैट के माध्यम से) बता रहा है। कोड में किसी बिंदु पर, मुझे "जीसी मुक्त एक्स ऑब्जेक्ट्स/एक्स एमएस" संदेशों की एक धारा मिलती है, मूल रूप से मुझे सूचित करते हैं कि ~ 150,000 ऑब्जेक्ट्स अभी हटा दिए गए हैं और यह एक पूर्ण सेकेंड ले रहा है।एंड्रॉइड:

मैं जानना चाहता हूं कि ये कहां से आए थे! मुझे पूरा यकीन है कि मैं जानबूझकर कई वस्तुओं को नहीं बना रहा हूं।

तो, क्या उस संदेश के विपरीत मूल रूप से प्राप्त करने का कोई तरीका है? कुछ ऐसा जो किसी ऑब्जेक्ट पर बनाया गया है जब कोई संदेश संदेश मुद्रित करता है?

इस तरह से मैं कोड पर कदम उठा सकता हूं, यह जांच कर सकता हूं कि कितने संदेश उत्पन्न हुए हैं, और यह देखते हुए कि कोड के कौन से हिस्से ऑब्जेक्ट उत्पन्न कर रहे हैं। मुझे लूप के हिस्से में ऑब्जेक्ट सृजन का कुछ रूप संदेह है, लेकिन यदि संभव हो तो यह सुनिश्चित करने का एक आसान तरीका होगा।

मैं Eclipse 3.4.2 का उपयोग कर रहा हूं, यदि यह प्रासंगिक है।

कोई विचार?

+0

जब आप किसी ऑब्जेक्ट का नया उदाहरण बनाते हैं, तो क्या आप कोई संदेश लॉग नहीं कर सकते? –

+0

अच्छा, हाँ, लेकिन _any_ ऑब्जेक्ट बनने पर मैं एक संदेश लॉग करना चाहता हूं। जैसे, यहां तक ​​कि Rects या स्ट्रिंग्स या ... कुछ भी। – mcccclean

उत्तर

3

आप सूर्य जेवीएम पर मौजूदा गेम कोड क्यों नहीं देखते हैं (मान लीजिए कि आप जावा गेम पोर्ट कर रहे हैं)? फिर आप जेपीरोफेलर, योरकिट इत्यादि का लाभ उठा सकते हैं और देख सकते हैं कि वस्तुओं का विशाल सेट साफ़ किया जा रहा है। (उपयोग करें-XX: + प्रिंट जीसीडीईएस को देखने के लिए जीसी रन देखने के लिए।)

यदि यह गेम में नहीं है, तो आपने बहुत दर्द रहित ढंग से यह पता लगाया है, और फिर आपका ध्यान बदल सकता है अपने एंड्रॉइड कोड में। और दुर्भाग्य से मुझे इसके बारे में बहुत कुछ पता नहीं है।

8

एंड्रॉइड (ग्रहण संस्करण नहीं) के साथ आने वाले डीडीएमएस टूल का उपयोग करना संभव है। इसका उपयोग करके, आवंटन ट्रैकर टैब को देखें। आप उन सभी जगहों के आवंटन को ट्रैक करना शुरू कर सकते हैं जहां उन्हें आवंटित किया गया था। हालांकि, यह टूल जानकारी का एक उत्पादन कर सकता है और जो विशेष जानकारी आप चाहते हैं वह पार्स या ढूंढना हमेशा आसान नहीं होता है। यदि आपके पास सूर्य जेवीएम के लिए एक संस्करण है, तो मैं काई के उपकरण का उपयोग करने की सलाह दूंगा, वे बहुत अधिक विकसित हुए हैं। यदि आपको एंड्रॉइड में ऐसा करना है, आवंटन ट्रैकर का उपयोग करके आप एक शुरुआत करेंगे।