• Like
  • Save
Memory management for i os dev
Upcoming SlideShare
Loading in...5
×
 

Memory management for i os dev

on

  • 3,463 views

 

Statistics

Views

Total Views
3,463
Views on SlideShare
1,053
Embed Views
2,410

Actions

Likes
0
Downloads
8
Comments
0

6 Embeds 2,410

http://www.e-legion.ru 2348
http://test.e-legion.ru 34
http://www.e-legion.com 13
http://www.slideshare.net 7
http://www.techgig.com 6
url_unknown 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Memory management for i os dev Memory management for i os dev Presentation Transcript

    • Ошибки при работе с памятью наiOS
      Поиск причин падений в связи с “Low Memory” и EXC_BAD_ACCESS
    • Аудитория
      Разработчики
      Разработчики под iOS
    • Работа с памятью под iOS
      reference counted
      NSObject
      alloc/dealloc
      retain/release
      retainCount
    • Работа с памятью под iOS
      plane = [[Plane alloc] init];
      plane2 = [plane retain];
      plane3 = plane;
      [plane release];
      [plane2 release];
       [plane dealloc];
      plane
      1
      2
      0
      Plane
      plane3
      plane2
    • Ошибки при работе с памятью
      Утечки типа 1: ссылки удалены, объект живет
      Утечки типа 2: ссылки есть, объект живет (но зря)
      Обращение к освобожденным объектам: ссылки живут, объект не живет
    • Утечки первого типа
      leakedPlane = [[Plane alloc] init];

      leakedPlaner = [[Plane alloc] init];
      Plane
      leakedPlane
      Leak
      Plane
    • Утечки второго типа
      leakedPlane = [[Plane alloc] init];
      [leakedPlane retain]
      [leakedPlane release]
      Plane
      leakedPlane
    • Обращение к освобожденному объекту
      leakedPlane1 = [[Plane alloc] init];
      leakedPlane2 = leakedPlane1;
      [leakedPlane1 release]; leakedPlane1 = nil;
      [leakedPlane2 fly];
      Elephant
      leakedPlane1
      Plane
      BAD_ACCESS
      leakedPlane2
      Automobile
    • Low memory
      Processes
               Name                 UUID                    Count resident pages
            MobileMail <0798395dde43ca46317db6e674dfbbfd>    692
           MobilePhone <82c9bd8583f4b09706a16b08e641a4b9>    489
      KingsHeroOrigins <307177e18450cdb18d466c8e7fbb23d9>  12718 (jettisoned) (active)
      iPhone/iPod 1st & 2nd generation: 128 MB RAM
      Only ~20 MB for application!!!
      iPhone 3GS, iPod 3rd generation & iPad: 256 MB RAM
      ~110 MB for application, but multitasking
    • EXC_BAD ACCESS
      Program received signal:  “EXC_BAD_ACCESS”
    • Что с этим делать?
      Утечки памяти первого типа (объекты без ссылок)
      Instruments, Leaks
      Утечки памяти второго типа (вечные объекты)
      Instruments, ObjAlloc
      Анализ связей
      Переопределение retain/release
      EXC_BAD_ACCESS
      NSZombieEnabled (stack)
      Instruments, ObjAlloc (new XCode)
      Анализ связей
      Переопределение retain/release/dealloc
    • DEMO
    • Анализ связей
      Кто владеет этим объектом?
      Карта связей
      По каким событиям он должен освобождаться?
      Какие объекты должны освобождаться по этому событию?
    • Вопросы???
    • Контактная информация
      Станислав Краснояров
      Stanislav.Krasnoyarov@gmail.com