การใช้หน่วยความจำสูงจริงๆใน ARC

ในแอปของฉัน ฉันสังเกตเห็นว่ามันช้ามากเมื่อสลับระหว่างแท็บต่างๆ การตรวจสอบเพิ่มเติมพบว่าในการทดสอบการใช้หน่วยความจำ แอปของฉันมีขนาดเกิน 70mb ในการทดสอบ 5 นาที แอปอีเมลพื้นฐานของฉันใช้พื้นที่เพียง 40mb เท่านั้น สิ่งนี้ไม่สามารถเกิดขึ้นได้

ฉันใช้ ARC และสิ่งที่ฉันคิดก็คือถ้าฉันใช้อะไรแบบนั้น

@property(nonatomic, strong)NSString *string;

ARC จะทำการจัดสรรคืนโดยอัตโนมัติ ดูเหมือนจะไม่ทำอย่างนั้นเลย

สิ่งที่ฉันอยากรู้คือถ้าฉันสามารถลดหน่วยความจำของฉันโดยใช้ dealloc ในโค้ดของฉัน (เมื่อฉันเปลี่ยนมาใช้ ARC มันจะลบวิธีการ dealloc ทั้งหมดของฉัน) หรือหากมีวิธีอื่นในการเพิ่มความเร็วแอปของฉัน

เพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่แอปทำ นี่คือรายการประเด็นสำคัญ:

-รับข้อความเมลจากบริการเว็บพร้อมกับไฟล์ PDF

-จัดเก็บอาร์เรย์เพื่อตรวจสอบว่าข้อความถูกอ่าน ลบ หรือยังไม่ได้อ่านหรือไม่

- แท็บ Mail จะตรวจสอบข้อความใหม่จากบริการเว็บทุกครั้งที่มีคนคลิกบนแท็บ

- ตรวจสอบไฟล์ pdf เหมือนกัน

ข้อมูลใด ๆ จะช่วยฉันได้มาก

ขอบคุณ

แก้ไข

นี่คือภาพการรั่วไหลที่ฉันมี มันเป็นจำนวนมาก.

ป้อนคำอธิบายรูปภาพที่นี่ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่


person BigT    schedule 18.07.2012    source แหล่งที่มา


คำตอบ (2)


วิธีที่ดีที่สุดในการค้นหาว่าอะไรคือสาเหตุของการใช้หน่วยความจำสูงนี้คือการใช้เครื่องมือ Instruments และโดยเฉพาะอย่างยิ่งเครื่องมือ Leaks

คุณสามารถดูข้อมูลเพิ่มเติมได้จากไซต์นักพัฒนาซอฟต์แวร์ของ Apple ที่นี่.

หวังว่านี่จะช่วยได้

person werner    schedule 18.07.2012
comment
ขอบคุณสำหรับความช่วยเหลือ ดูการแก้ไขในคำถามของฉัน ฉันได้เพิ่มการรั่วไหล - person BigT; 18.07.2012
comment
ฉันขอแนะนำให้ดูวิดีโอ WWDC 2010: เซสชัน 311 - การวิเคราะห์หน่วยความจำขั้นสูงพร้อมเครื่องมือ ซึ่งจะช่วยให้คุณเข้าใจอินเทอร์เฟซของ Instruments เพื่อค้นหาโค้ดที่ทำให้เกิดปัญหา - person werner; 18.07.2012

ฉันไม่คุ้นเคยกับ ARC แต่ฉันคิดว่าอาจทำให้แอปของคุณช้าลงเล็กน้อย ทำไม คิดว่า: ARC จะทำงาน "เผยแพร่" ของคุณโดยอัตโนมัติเทียบกับการเผยแพร่ด้วยตนเอง สมมติว่าคุณมีเมธอด 30 บรรทัด และในบรรทัดแรกคุณสร้างอ็อบเจ็กต์ จากนั้นในบรรทัดที่สาม คุณไม่ต้องการมันอีกต่อไปแล้ว และคุณปล่อยมันด้วยตนเอง ในขณะที่ ARC จะรอจนกว่าจะสิ้นสุดวิธีการจึงจะรู้ว่าวัตถุของคุณไม่จำเป็นอีกต่อไป ตอนนี้ สมมติว่าคุณทำการจัดสรรจำนวนมากในวิธีการของคุณ และ ARC จะเก็บไว้ทั้งหมดจนกว่าจะถึงจุดสิ้นสุดของวิธีการ การปล่อยด้วยตนเองนั้นเร็วกว่า IMHO

person John Smith    schedule 18.07.2012