일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 나르왈프레오
- 멤버십
- Neural Network
- 패턴 인식
- 고려대학교
- 가상화
- SSM
- 물걸레로봇청소기추천
- 빅데이터
- 신경회로망
- 패턴인식
- 삼성전자 소프트웨어멤버십 SSM
- BAM
- Python
- 구글 앱 엔진
- Friendship
- 삼성소프트웨어멤버십
- Google App Engine
- 증강현실
- 동아리
- 물걸레자동세척로봇청소기
- 신경망
- 인공지능
- hopfield network
- 파이썬
- 하이퍼바이저
- 갤럭시탭S8울트라
- 삼성
- Bidirectional Associative Memory
- NarwalFreo
- Today
- Total
정보공간_1
[3기 강북 김승현] Android Heap Memory 관리 본문
1. Heap 메모리 관리는 왜하는가?
기본적으로 Android App은 통상적인 Windows App 이나 Linux App 들과는 다르게, 한개의 Android App 이 Device의 모든 RAM을 사용 할 수 없게 되어있다.
할당량은 디바이스마다 각각 다른데, 이정보는 /system/build.prop 에 기록되어있다.
build.prop 파일을 열어보면, dalvik.vm.heapsize=??m 으로 쓰여진게 해당 device의 App 이 최대로사용 할 수 있는 Heap 공간이라고 생각하면된다. 보통 작게는 16~많게는 64 정도 까지 밖에 되지 않는다. Stack은 기본적으로 8KB밖에 할당 되지 않고, Thread Group 설정을 통해서 늘릴 수 있다.
2. Context Leak
Android App은 Context 단위로 메모리를 관리하게 되어있는데, Context 의 종류는 Activity, Service, Application 이 있다.
Context를 사용 할 때 주의 할 점이 있는데, Android API상에서 Context를 요구하는 함수가 많다고해서, Context를 static으로 사용 하면 안된다는 점이다. static으로 사용하게 되면 Context에 해당하는 Activity같은 것이 onDestroy되어도 gc가 static 멤버 때문에 되지 않을 수 있어 위험하다. (액티비티와 관련된 모든것이 gc가 되지 못한다. layout background등...)
3. Bitmap
Android 에서 Bitmap은 조금 특별한 객체인데, 보통의 Object는 java단에서 메모리할당이 끝나지만, Bitmap은 framework 소스를 보면 실제 메모리 할당은 c++에서 일어나는 것을 알 수 있다.
그래서 recycle 메소드를 꼭 호출 해주어야 메모리 해제가 되는데(특히 2.3이하 구버전) Bitmap 사용시는 꼭 recycle 메소드를 호출하여 메모리 손실을 막도록 하자
4. android:largeHeap="true"
Android 3.1 버전에 새로 등장한 기능인데, Heap메모리 용량을 조금더 늘려서 할당해주는 기능이다.
매니페스트의 Application 태그에 기록하면 된다.
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[3기 강남 정준호] MP-Core Scheduling (0) | 2013.02.06 |
---|---|
[3기 강남 정준호] SMP Struct와 Multi-core System (0) | 2013.02.06 |
[3기 강남 이소영] 스토리텔링 (Story telling) (0) | 2013.02.05 |
[3기 강남 백정의] 웹에 올리는 SWF파일과 Actionscript와 Javascript의 연동 (0) | 2013.02.05 |
[3기 대전 김재원] Linux Kernel Debugging - Dynamic Probes(2) (0) | 2013.02.05 |