SlideShare uma empresa Scribd logo
1 de 231
Baixar para ler offline
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’을
 가지는
 것
인스턴스
 객체의
 오너만이
 그
 인스턴스의

Mais conteúdo relacionado

Mais procurados

TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript IntroductionDmitry Sheiko
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스NAVER D2
 
Java Annotation Processing: A Beginner Walkthrough
Java Annotation Processing: A Beginner WalkthroughJava Annotation Processing: A Beginner Walkthrough
Java Annotation Processing: A Beginner WalkthroughMahfuz Islam Bhuiyan
 
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 CodeJavajigi Jaesung
 
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자Donghyeok Kang
 
Low latency Java apps
Low latency Java appsLow latency Java apps
Low latency Java appsSimon Ritter
 
Spring tutorial
Spring tutorialSpring tutorial
Spring tutorialPhuong Le
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문SeungHyun Eom
 
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"용근 권
 
Apache IOTDB: a Time Series Database for Industrial IoT
Apache IOTDB: a Time Series Database for Industrial IoTApache IOTDB: a Time Series Database for Industrial IoT
Apache IOTDB: a Time Series Database for Industrial IoTjixuan1989
 
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규ChangKyu Song
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOPDzmitry Naskou
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccYujiSoftware
 
Java - Collections framework
Java - Collections frameworkJava - Collections framework
Java - Collections frameworkRiccardo Cardin
 
左と右の話
左と右の話左と右の話
左と右の話Cryolite
 
Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄Suhyeon Jo
 

Mais procurados (20)

TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
 
Java Spring
Java SpringJava Spring
Java Spring
 
Spring jdbc dao
Spring jdbc daoSpring jdbc dao
Spring jdbc dao
 
Spring JMS
Spring JMSSpring JMS
Spring JMS
 
Java Annotation Processing: A Beginner Walkthrough
Java Annotation Processing: A Beginner WalkthroughJava Annotation Processing: A Beginner Walkthrough
Java Annotation Processing: A Beginner Walkthrough
 
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
 
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
 
Presentation swagger
Presentation swaggerPresentation swagger
Presentation swagger
 
Low latency Java apps
Low latency Java appsLow latency Java apps
Low latency Java apps
 
Spring tutorial
Spring tutorialSpring tutorial
Spring tutorial
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문
 
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
 
Apache IOTDB: a Time Series Database for Industrial IoT
Apache IOTDB: a Time Series Database for Industrial IoTApache IOTDB: a Time Series Database for Industrial IoT
Apache IOTDB: a Time Series Database for Industrial IoT
 
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
 
Java - Collections framework
Java - Collections frameworkJava - Collections framework
Java - Collections framework
 
左と右の話
左と右の話左と右の話
左と右の話
 
Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄
 

Destaque

[Objective-C] Objective-C의 메모리 관리 방법
[Objective-C] Objective-C의 메모리 관리 방법[Objective-C] Objective-C의 메모리 관리 방법
[Objective-C] Objective-C의 메모리 관리 방법Theodore(Yongbin) Cha
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304Yong Joon Moon
 
파이썬 기초
파이썬 기초 파이썬 기초
파이썬 기초 Yong Joon Moon
 
Python_numpy_pandas_matplotlib 이해하기_20160815
Python_numpy_pandas_matplotlib 이해하기_20160815Python_numpy_pandas_matplotlib 이해하기_20160815
Python_numpy_pandas_matplotlib 이해하기_20160815Yong 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 이해하기 20160815Yong Joon Moon
 

Destaque (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
 

Semelhante a iOS 메모리관리

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 TajoGruter
 
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 releaseJaehyeuk Oh
 
Blockchain 2nd ethereum_core
Blockchain 2nd ethereum_coreBlockchain 2nd ethereum_core
Blockchain 2nd ethereum_coreihpark92
 
(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
 
Programming java day2
Programming java day2Programming java day2
Programming java day2Jaehoonyam
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍준혁 이
 
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
 

Semelhante a iOS 메모리관리 (20)

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
 
One-day-codelab
One-day-codelabOne-day-codelab
One-day-codelab
 

Mais de Changwon National University

생성인공지능둘러보기.pdf
생성인공지능둘러보기.pdf생성인공지능둘러보기.pdf
생성인공지능둘러보기.pdfChangwon National University
 
알아두면 편리한 macOS 에디터 단축키와 기능
알아두면 편리한 macOS 에디터  단축키와 기능알아두면 편리한 macOS 에디터  단축키와 기능
알아두면 편리한 macOS 에디터 단축키와 기능Changwon National University
 
키보드 기호의 이름 알아보기(한국어, 영어)
키보드 기호의 이름 알아보기(한국어, 영어)키보드 기호의 이름 알아보기(한국어, 영어)
키보드 기호의 이름 알아보기(한국어, 영어)Changwon National University
 
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)Changwon National University
 
18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리Changwon National University
 
15 2 클래스정의와self
15 2 클래스정의와self15 2 클래스정의와self
15 2 클래스정의와selfChangwon National University
 

Mais de 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 메모리관리