SlideShare a Scribd company logo
iOS Memory
Management
이영록
실행시	 메모리	 구조
실행시	 메모리	 구조
Stack
Heap
Data
Code(Text)
실행시	 메모리	 구조
Stack
Heap
Data
Code(Text) 프로그램코드가
 저장
실행시	 메모리	 구조
Stack
Heap
Data
Code(Text)
전역변수와
 정적변수가
 저장
프로그램코드가
 저장
실행시	 메모리	 구조
Stack
Heap
Data
Code(Text)
전역변수와
 정적변수가
 저장
동적할당을
 위한
 공간
프로그램코드가
 저장
실행시	 메모리	 구조
Stack
Heap
Data
Code(Text)
전역변수와
 정적변수가
 저장
동적할당을
 위한
 공간
지역변수와
 매개변수가
 저장
프로그램코드가
 저장
실행시	 메모리	 구조
Stack
Heap
Data
Code(Text)
전역변수와
 정적변수가
 저장
동적할당을
 위한
 공간
지역변수와
 매개변수가
 저장
프로그램코드가
 저장
}메모리
 사용량
 변동없음
프로그램
 종료시
 해제
실행시	 메모리	 구조
Stack
Heap
Data
Code(Text)
전역변수와
 정적변수가
 저장
동적할당을
 위한
 공간
지역변수와
 매개변수가
 저장
프로그램코드가
 저장
}메모리
 사용량
 변동없음
프로그램
 종료시
 해제
-
객체가
 생성되는
 공간
사용량이
 변동
메모리관리의
 대상영역
실행시	 메모리	 구조
Stack
Heap
Data
Code(Text)
전역변수와
 정적변수가
 저장
동적할당을
 위한
 공간
지역변수와
 매개변수가
 저장
프로그램코드가
 저장
}메모리
 사용량
 변동없음
프로그램
 종료시
 해제
-
객체가
 생성되는
 공간
사용량이
 변동
메모리관리의
 대상영역
사용량이
 계속해서
 변경
OS가
 관리-
메모리-Code 영역
프로그램의
 명령문들
-
 이
 명령문에
 의해
 프로그램은
 작동한다
메모리-Data 영역
전역변수
• 프로그램 전역에서 사용가능한변수
정적변수
• 실행중에 항상 일정한 메모리 공간에 유지됨
• 블럭을 벗어나도 자동으로 제거되지 않음
메모리-Heap 영역
동적할당 변수
• 프로그램 실행중에 Heap 영역으로부터 필요한 만큼 메모리를 할당받는다.
• 사용이 완료되면 시스템에 반납하여야 한다
• C언어에서는 malloc() 함수에 의해 할당
• C++ 언어에서는 new 키워드에 의해 할당
• Objective-C 언어에서는 alloc 메소드에 의해 할당
장점
• 효율적인 메모리 관리가 가능하다
단점
• 메모리 관리를 프로그래머가 책임지고 해야한다
메모리-Stack 영역
지역변수
• 함수나 블럭안에서 정의되는 변수
• 함수가 종료되거나 프로그램이 종료되면 메모리 공간이 해제됨
• 함수가 받는 매개 변수나 함수내에서 사용되는 지역변수가 이 Stack 영역에 저장
( OS의 관리 )
@interface ClassA : NSObject {
}
+ (void) imClassMethod
- (void) methodA;
@end
@implementation ClassA
+ (void) imClassMethod {
	 NSLog(@I’m Class Method);
}
- (void) methodA {
	 NSLog(@I’m A);
}
@end
@interface ClassB : ClassA {
}
- (void) methodB;
@end
@implementation ClassB
- (void) methodB {
	 NSLog(@I’m B);
}
@end
@interface ClassC : ClassB {
}
- (void) methodC;
@end
@implementation ClassC
- (void) methodC {
	 NSLog(@I’m C);
}
@end
int main (int argc, const char * argv[]) {
ClassC *obj = [[ClassC alloc] init];
	 [obj methodC];
	 [obj methodB];
	 [obj methodA];
	 [obj methodX];
NSNumber *num =[[NSNumber alloc] init];
return 0;
}
Stack Heap
Code
ClassC *obj = [[ClassC alloc] init];
Stack Heap
Code
ClassC *obj = [[ClassC alloc] init];
Stack Heap
Code
ClassC
ClassC *obj = [[ClassC alloc] init];
ClassC의 Instance
Stack Heap
Code
ClassC
+alloc
ClassC *obj = [[ClassC alloc] init];
ClassC의 Instance
Stack Heap
Code
ClassC
-init
+alloc
ClassC *obj = [[ClassC alloc] init];
ClassC의 Instance
obj
Stack Heap
Code
ClassC
-init
+alloc
ClassC *obj = [[ClassC alloc] init];
ClassC의 Instance
obj
Stack Heap
Code
ClassC
-init
+alloc
ClassC *obj = [[ClassC alloc] init];
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-init
+alloc
ClassC *obj = [[ClassC alloc] init];
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-init
+alloc
ClassC의 Instance
obj isa
Stack Heap
Code
[obj methodC];
ClassC
-init
+alloc
ClassC의 Instance
obj isa
Stack Heap
Code
[obj methodC];
ClassC
-methodC
-init
+alloc
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
[obj methodB];
-init
+alloc
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
[obj methodB];
super
-init
+alloc
ClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
[obj methodB];
super
-init
+alloc
ClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
[obj methodB];
super
-methodB
-init
+alloc
ClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
[obj methodA];
-init
+alloc
ClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
[obj methodA];
super
-init
+alloc
ClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
[obj methodA];
super
-init
+alloc
ClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
[obj methodA];
super
-methodA
-init
+alloc
ClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
[obj methodX];
-init
+alloc
ClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
[obj methodX];
super
-init
+alloc
NSObjectClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
[obj methodX];
super
-init
+alloc
NSObjectClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
[obj methodX];
super
-methodX
-init
+alloc
NSObjectClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
[obj methodX];
super
-init
+alloc
NSObjectClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
[obj methodX];
super
-init
+alloc
NSObjectClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
[obj methodX];
super
-init
+alloc
NSObjectClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
[obj methodX];
super
-init
+alloc
NSObjectClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
[obj methodX];
super
-init
+alloc
NSObjectClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
[obj methodX];
super
-init
+alloc
NSObjectClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
[obj methodX];
super
-init
+alloc
NSObjectClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
super
NSNumber *num=[[NSNumber alloc] init];
-init
+alloc
NSObject NSNumberClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
super
NSNumber *num=[[NSNumber alloc] init];
-init
+alloc
NSObject NSNumberClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
super
NSNumber *num=[[NSNumber alloc] init];
+alloc
-init
+alloc
NSObject NSNumberClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
super
NSNumber *num=[[NSNumber alloc] init];
+alloc
NSNumber의 Instance
-init -init
+alloc
NSObject NSNumberClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
super
NSNumber *num=[[NSNumber alloc] init];
+alloc
NSNumber의 Instance
num
-init -init
+alloc
NSObject NSNumberClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
super
NSNumber *num=[[NSNumber alloc] init];
+alloc
NSNumber의 Instance
num
isa
-init -init
+alloc
NSObject NSNumberClassAClassB
ClassC의 Instance
obj isa
Stack Heap
Code
ClassC
-methodC
super
-methodB
super
-methodA
super
NSNumber *num=[[NSNumber alloc] init];
+alloc
NSNumber의 Instance
num
isa
super
-init -init
+alloc
메모리 관리란?
메모리 관리란?
메모리 관리란?
Heap
메모리 관리란?
Heap
object
메모리 관리란?
Heap
object
object
메모리 관리란?
Heap
object
object
object
메모리 관리란?
Heap
object
object
object
object
메모리 관리란?
Heap
object
object
object
object
object
메모리 관리란?
Heap
object
object
object
object
object
object
메모리 관리란?
Heap
object
object
object
object
object
object
object
메모리 관리란?
Heap
object
object
object
object
object
object
object
object
메모리 관리란?
Heap
object
object
object
object
object
object
object
object
object
메모리 관리란?
Heap
object
object
object
object
object
object
object
object
object
object
메모리 관리란?
Heap
object
object
object
object
object
object
object
object
object
메모리 관리란?
Heap
object
object
object
object
object
object
object
object
메모리 관리란?
Heap
object
object
object
object
object
object
object
메모리 관리란?
Heap
object
object
object
object
object
object
메모리 관리란?
Heap
object
object
object
object
object
메모리 관리 방식
명시적해제 가비지콜렉터 레퍼런스
 카운팅
방식
프로그래머가
 객체를
 생
성해서
 사용하다
 필요가
 
없을때
 명시적으로
 해제
가비지
 콜렉터가
 수시로
 
실행되어서
 필요없는
 객체
들을
 해제
레퍼런스(리테인)카운트
에
 의해
 객체를
 해제
특징
전적으로
 프로그래머에
 
의해
 관리
시스템부하없슴
 
프로그래머가
 관리안함
시스템부하
프로그래머가
 오너쉽정책
에
 의거해서
 관리
시스템부하없슴
언어
C++
Delphi
Java
C#
Objective-C
Reference Count System
int main (int argc, const char * argv[]) {
NSNumber *num = [[NSNumber alloc] init];
NSNumber *num1 = [num retain];
NSNumber *num2 = num;
[num release];
[num1 release];
return 0;
}
Reference Count System
Heapstack
Heapstack
NSNumber *num = [[NSNumber alloc] init];
Heapstack
NSNumber의객체
NSNumber *num = [[NSNumber alloc] init];
Heapstack
num
NSNumber의객체
NSNumber *num = [[NSNumber alloc] init];
Heapstack
num
NSNumber의객체
NSNumber *num = [[NSNumber alloc] init];
Heapstack
num
NSNumber의객체
= 1
NSNumber *num = [[NSNumber alloc] init];
retainCount
Heapstack
NSNumber *num1 = [num retain];
num
NSNumber의객체
= 1retainCount
Heapstack
NSNumber *num1 = [num retain];
num
NSNumber의객체
= 1
num1
retainCount
Heapstack
NSNumber *num1 = [num retain];
num
NSNumber의객체
= 1
num1
retainCount
Heapstack
NSNumber *num1 = [num retain];
num
NSNumber의객체
num1
+ 1retainCount
Heapstack
NSNumber *num1 = [num retain];
num
NSNumber의객체
num1
= 2retainCount
Heapstack
num
NSNumber의객체
num1
= 2retainCount
NSNumber *num2 = num;
Heapstack
num
NSNumber의객체
num1
= 2retainCount
NSNumber *num2 = num;
num2
Heapstack
num
NSNumber의객체
num1
= 2
[num release];
retainCount
num2
Heapstack
num
NSNumber의객체
num1
- 1
[num release];
retainCount
num2
Heapstack
num
NSNumber의객체
num1
= 1
[num release];
retainCount
num2
Heapstack
num
NSNumber의객체
num1
= 1
[num1 release];
retainCount
num2
Heapstack
num
NSNumber의객체
num1
- 1
[num1 release];
retainCount
num2
Heapstack
num
NSNumber의객체
num1
[num1 release];
= 0retainCount
num2
Heapstack
num
NSNumber의객체
num1
[num1 release];
= 0
dealloc
retainCount
num2
Heapstack
num
NSNumber의객체
num1
[num1 release];
= 0retainCount
num2
Heapstack
num
num1
[num1 release];
num2
Reference Count System
- (id)init
- (id)retain
- (oneway void)release
- (id)autorelease
- (id)copy
.
.
.
Reference Count System
- (id)init
- (id)retain
- (oneway void)release
Reference Count System
- (id)init
- (id)retain
- (oneway void)release
{
.
	 .
	 .
	 retrainCount=1;
	 .
}
Reference Count System
- (id)init
- (id)retain
- (oneway void)release
{
.
	 .
	 .
	 retrainCount=1;
	 .
}
{
	retrainCount+=1;
return self;
}
Reference Count System
- (id)init
- (id)retain
- (oneway void)release
{
.
	 .
	 .
	 retrainCount=1;
	 .
}
{
	retrainCount+=1;
return self;
}
{
	retrainCount-=1;
	 if (retrainCount==0) [self dealloc];
}
잘못된 메모리 관리
int main (int argc, const char * argv[]) {
NSNumber *var1 = [[NSNumber alloc] init];
NSNumber *var2 = [[NSNumber alloc] init];
NSNumber *var3 = [[NSNumber alloc] init];
NSNumber *var4 = [[NSNumber alloc] init];
var2 = [[NSNumber alloc] init];
[var3 release];
[var3 isEqualToNumber: var1];
return 0;
}
잘못된
 메모리관리
잘못된
 메모리관리
Heapstack
Heapstack
NSNumber *var1 = [[NSNumber alloc] init];
Heapstack
object1var1
NSNumber *var1 = [[NSNumber alloc] init];
Heapstack
object1var1
object2var2
NSNumber *var2 = [[NSNumber alloc] init];
Heapstack
object1var1
object2var2
object3var3
NSNumber *var3 = [[NSNumber alloc] init];
Heapstack
object1var1
object2var2
object3var3
object4
var4
NSNumber *var4 = [[NSNumber alloc] init];
Heapstack
object1var1
object2var2
object3var3
object4
var4
var2 = [[NSNumber alloc] init];
Heapstack
object1var1
object2var2
object3var3
object4
var4
object5
var2 = [[NSNumber alloc] init];
Heapstack
object1var1
object2var2
object3var3
object4
var4
object5
var2 = [[NSNumber alloc] init];
Heapstack
object1var1
object2var2
object3var3
object4
var4
object5
var2 = [[NSNumber alloc] init];
memory
leak
Heapstack
object1var1
object2var2
object3var3
object4
var4
object5
[var3 release];
memory
leak
Heapstack
object1var1
object2var2
var3
object4
var4
object5
[var3 release];
memory
leak
Heapstack
object1var1
object2var2
var3
object4
var4
object5
[var3 isEqualToNumber: var1];
memory
leak
Heapstack
object1var1
object2var2
var3
object4
var4
object5
[var3 isEqualToNumber: var1];
memory
leak
dangling
pointer
Ownership Policy
alloc
 을
 사용한
 인스턴스
 생성
copy를
 사용한
 인스턴스
 복사
retain을
 사용한
 보존
자기
 몫의
 retainCount
 ‘1’을
 가지는
 것
인스턴스
 객체의
 오너만이
 그
 인스턴스의

More Related Content

What's hot

코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
Jiyeon Seo
 
강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction
Taehoon Kim
 
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
Richie Shellshoccar
 
Java SE 8 best practices
Java SE 8 best practicesJava SE 8 best practices
Java SE 8 best practices
Stephen Colebourne
 
Specification-By-Example with Gherkin
Specification-By-Example with GherkinSpecification-By-Example with Gherkin
Specification-By-Example with Gherkin
Christian Hassa
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
Suhyun Park
 
How I become Go GDE
How I become Go GDEHow I become Go GDE
How I become Go GDE
Evan Lin
 
JVM Under The Hood WDI.pdf
JVM Under The Hood WDI.pdfJVM Under The Hood WDI.pdf
JVM Under The Hood WDI.pdf
Bartłomiej Żyliński
 
개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님
NAVER D2
 
Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)
NAVER Engineering
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better Engineer
DaeMyung Kang
 
코드리뷰를 시작하려는 그대에게
코드리뷰를 시작하려는 그대에게코드리뷰를 시작하려는 그대에게
코드리뷰를 시작하려는 그대에게
Jiyeon Seo
 
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own datasetYOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
moto2g
 
Massive service basic
Massive service basicMassive service basic
Massive service basic
DaeMyung Kang
 
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
Jay Park
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数
Shinichi Kozake
 
Redis
RedisRedis
飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC
Shuichi Tsutsumi
 
Scrum course
Scrum courseScrum course
Scrum course
Lhouceine OUHAMZA
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
Chris Ohk
 

What's hot (20)

코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
 
강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction
 
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
 
Java SE 8 best practices
Java SE 8 best practicesJava SE 8 best practices
Java SE 8 best practices
 
Specification-By-Example with Gherkin
Specification-By-Example with GherkinSpecification-By-Example with Gherkin
Specification-By-Example with Gherkin
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
 
How I become Go GDE
How I become Go GDEHow I become Go GDE
How I become Go GDE
 
JVM Under The Hood WDI.pdf
JVM Under The Hood WDI.pdfJVM Under The Hood WDI.pdf
JVM Under The Hood WDI.pdf
 
개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님
 
Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better Engineer
 
코드리뷰를 시작하려는 그대에게
코드리뷰를 시작하려는 그대에게코드리뷰를 시작하려는 그대에게
코드리뷰를 시작하려는 그대에게
 
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own datasetYOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
 
Massive service basic
Massive service basicMassive service basic
Massive service basic
 
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数
 
Redis
RedisRedis
Redis
 
飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC
 
Scrum course
Scrum courseScrum course
Scrum course
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 

Viewers also liked

[Objective-C] Objective-C의 메모리 관리 방법
[Objective-C] Objective-C의 메모리 관리 방법[Objective-C] Objective-C의 메모리 관리 방법
[Objective-C] Objective-C의 메모리 관리 방법
Theodore(Yongbin) Cha
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304
Yong Joon Moon
 
파이썬 기초
파이썬 기초 파이썬 기초
파이썬 기초
Yong Joon Moon
 
Python_numpy_pandas_matplotlib 이해하기_20160815
Python_numpy_pandas_matplotlib 이해하기_20160815Python_numpy_pandas_matplotlib 이해하기_20160815
Python_numpy_pandas_matplotlib 이해하기_20160815
Yong Joon Moon
 
파이썬 심화
파이썬 심화파이썬 심화
파이썬 심화
Yong Joon Moon
 
파이썬 Special method 이해하기
파이썬 Special method 이해하기파이썬 Special method 이해하기
파이썬 Special method 이해하기
Yong Joon Moon
 
python 수학이해하기
python 수학이해하기python 수학이해하기
python 수학이해하기
Yong Joon Moon
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법
중선 곽
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815
Yong Joon Moon
 

Viewers also liked (9)

[Objective-C] Objective-C의 메모리 관리 방법
[Objective-C] Objective-C의 메모리 관리 방법[Objective-C] Objective-C의 메모리 관리 방법
[Objective-C] Objective-C의 메모리 관리 방법
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304
 
파이썬 기초
파이썬 기초 파이썬 기초
파이썬 기초
 
Python_numpy_pandas_matplotlib 이해하기_20160815
Python_numpy_pandas_matplotlib 이해하기_20160815Python_numpy_pandas_matplotlib 이해하기_20160815
Python_numpy_pandas_matplotlib 이해하기_20160815
 
파이썬 심화
파이썬 심화파이썬 심화
파이썬 심화
 
파이썬 Special method 이해하기
파이썬 Special method 이해하기파이썬 Special method 이해하기
파이썬 Special method 이해하기
 
python 수학이해하기
python 수학이해하기python 수학이해하기
python 수학이해하기
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815
 

Similar to iOS 메모리관리

Java Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte CodeJava Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte Code
Javajigi Jaesung
 
Java mentoring of samsung scsc 2
Java mentoring of samsung scsc   2Java mentoring of samsung scsc   2
Java mentoring of samsung scsc 2
도현 김
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache Tajo
Gruter
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicknight1128
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 release
Jaehyeuk Oh
 
Blockchain 2nd ethereum_core
Blockchain 2nd ethereum_coreBlockchain 2nd ethereum_core
Blockchain 2nd ethereum_core
ihpark92
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
기동 이
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처
Sunggon Song
 
Kubernetes & helm 활용
Kubernetes & helm 활용Kubernetes & helm 활용
Kubernetes & helm 활용
SK Telecom
 
Gcd ppt
Gcd pptGcd ppt
Gcd ppt
Sangon Lee
 
Programming java day2
Programming java day2Programming java day2
Programming java day2Jaehoonyam
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍
준혁 이
 
Node.js at OKJSP
Node.js at OKJSPNode.js at OKJSP
Node.js at OKJSP
JeongHun Byeon
 
JVM 메모리 해부학
JVM 메모리 해부학JVM 메모리 해부학
JVM 메모리 해부학
Greg Lee
 
Webrtc 허영남 20150528
Webrtc 허영남 20150528Webrtc 허영남 20150528
Webrtc 허영남 20150528
영남 허
 
Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.
SeungWoo Lee
 
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
EXEM
 

Similar to iOS 메모리관리 (20)

Java Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte CodeJava Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte Code
 
Java mentoring of samsung scsc 2
Java mentoring of samsung scsc   2Java mentoring of samsung scsc   2
Java mentoring of samsung scsc 2
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache Tajo
 
Apache avro
Apache avroApache avro
Apache avro
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamic
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 release
 
Blockchain 2nd ethereum_core
Blockchain 2nd ethereum_coreBlockchain 2nd ethereum_core
Blockchain 2nd ethereum_core
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처
 
Kubernetes & helm 활용
Kubernetes & helm 활용Kubernetes & helm 활용
Kubernetes & helm 활용
 
Gcd ppt
Gcd pptGcd ppt
Gcd ppt
 
Programming java day2
Programming java day2Programming java day2
Programming java day2
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍
 
Node.js at OKJSP
Node.js at OKJSPNode.js at OKJSP
Node.js at OKJSP
 
JVM 메모리 해부학
JVM 메모리 해부학JVM 메모리 해부학
JVM 메모리 해부학
 
Webrtc 허영남 20150528
Webrtc 허영남 20150528Webrtc 허영남 20150528
Webrtc 허영남 20150528
 
Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.
 
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
Mem cached
Mem cachedMem cached
Mem cached
 

More from Changwon National University

생성인공지능둘러보기.pdf
생성인공지능둘러보기.pdf생성인공지능둘러보기.pdf
생성인공지능둘러보기.pdf
Changwon National University
 
2011 app center Changwon National Univ.
2011 app center Changwon National Univ.2011 app center Changwon National Univ.
2011 app center Changwon National Univ.
Changwon National University
 
인공지능의 파도가 온다
인공지능의 파도가 온다인공지능의 파도가 온다
인공지능의 파도가 온다
Changwon National University
 
Mobile Healthcare Application
Mobile Healthcare ApplicationMobile Healthcare Application
Mobile Healthcare Application
Changwon National University
 
바다 즐기기
바다 즐기기바다 즐기기
알아두면 편리한 macOS 에디터 단축키와 기능
알아두면 편리한 macOS 에디터  단축키와 기능알아두면 편리한 macOS 에디터  단축키와 기능
알아두면 편리한 macOS 에디터 단축키와 기능
Changwon National University
 
키보드 기호의 이름 알아보기(한국어, 영어)
키보드 기호의 이름 알아보기(한국어, 영어)키보드 기호의 이름 알아보기(한국어, 영어)
키보드 기호의 이름 알아보기(한국어, 영어)
Changwon National University
 
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
Changwon National University
 
20 2 강의를 마치며
20 2 강의를 마치며20 2 강의를 마치며
20 2 강의를 마치며
Changwon National University
 
20 1 코딩스타일
20 1 코딩스타일20 1 코딩스타일
20 1 코딩스타일
Changwon National University
 
18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리
Changwon National University
 
18 1 파이썬패키지
18 1 파이썬패키지18 1 파이썬패키지
18 1 파이썬패키지
Changwon National University
 
17 2 필터함수와 맵함수
17 2 필터함수와 맵함수17 2 필터함수와 맵함수
17 2 필터함수와 맵함수
Changwon National University
 
17 1 람다함수
17 1 람다함수17 1 람다함수
17 1 람다함수
Changwon National University
 
16 1 상속과super()
16 1 상속과super()16 1 상속과super()
16 1 상속과super()
Changwon National University
 
15 2 클래스정의와self
15 2 클래스정의와self15 2 클래스정의와self
15 2 클래스정의와self
Changwon National University
 
14 4 슬라이싱
14 4 슬라이싱14 4 슬라이싱
14 4 슬라이싱
Changwon National University
 
14 2 iterator
14 2 iterator14 2 iterator
14 3 리스트함수
14 3 리스트함수14 3 리스트함수
14 3 리스트함수
Changwon National University
 
14 1 리스트의 메소드
14 1 리스트의 메소드14 1 리스트의 메소드
14 1 리스트의 메소드
Changwon National University
 

More from Changwon National University (20)

생성인공지능둘러보기.pdf
생성인공지능둘러보기.pdf생성인공지능둘러보기.pdf
생성인공지능둘러보기.pdf
 
2011 app center Changwon National Univ.
2011 app center Changwon National Univ.2011 app center Changwon National Univ.
2011 app center Changwon National Univ.
 
인공지능의 파도가 온다
인공지능의 파도가 온다인공지능의 파도가 온다
인공지능의 파도가 온다
 
Mobile Healthcare Application
Mobile Healthcare ApplicationMobile Healthcare Application
Mobile Healthcare Application
 
바다 즐기기
바다 즐기기바다 즐기기
바다 즐기기
 
알아두면 편리한 macOS 에디터 단축키와 기능
알아두면 편리한 macOS 에디터  단축키와 기능알아두면 편리한 macOS 에디터  단축키와 기능
알아두면 편리한 macOS 에디터 단축키와 기능
 
키보드 기호의 이름 알아보기(한국어, 영어)
키보드 기호의 이름 알아보기(한국어, 영어)키보드 기호의 이름 알아보기(한국어, 영어)
키보드 기호의 이름 알아보기(한국어, 영어)
 
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
 
20 2 강의를 마치며
20 2 강의를 마치며20 2 강의를 마치며
20 2 강의를 마치며
 
20 1 코딩스타일
20 1 코딩스타일20 1 코딩스타일
20 1 코딩스타일
 
18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리
 
18 1 파이썬패키지
18 1 파이썬패키지18 1 파이썬패키지
18 1 파이썬패키지
 
17 2 필터함수와 맵함수
17 2 필터함수와 맵함수17 2 필터함수와 맵함수
17 2 필터함수와 맵함수
 
17 1 람다함수
17 1 람다함수17 1 람다함수
17 1 람다함수
 
16 1 상속과super()
16 1 상속과super()16 1 상속과super()
16 1 상속과super()
 
15 2 클래스정의와self
15 2 클래스정의와self15 2 클래스정의와self
15 2 클래스정의와self
 
14 4 슬라이싱
14 4 슬라이싱14 4 슬라이싱
14 4 슬라이싱
 
14 2 iterator
14 2 iterator14 2 iterator
14 2 iterator
 
14 3 리스트함수
14 3 리스트함수14 3 리스트함수
14 3 리스트함수
 
14 1 리스트의 메소드
14 1 리스트의 메소드14 1 리스트의 메소드
14 1 리스트의 메소드
 

iOS 메모리관리