안드로이드 컴파일 방식은 크게 2가지로 나뉘는데, 그 2가지는 초창기에 사용한 Dalvik 컴파일 방식과 이후에 도입된 ART 컴파일 방식이다. 이번 포스팅에서는 컴파일 방식이 안드로이드 버전에 따라 어떻게 변화해 왔는지 알아보면서 컴파일 방식의 차이점도 함께 정리해보려고 한다. 안드로이드 개발 언어가 운영체제에 독립적인 Java로 채택이 되면서 JVM이 필요했다. 하지만 라이센스 문제와 메모리 효율성 등의 문제로 안드로이드는 Dalvik VM(=DVM)을 사용하게 된다. 라이센스 문제 Java ME를 사용하기 위해서 Sun 회사에게 라이센스 비용을 지불해야하는 문제가 발생했다. (DVM에서 컴파일 과정 중 .class를 .dex로 변환하는 dx 툴은 Java SE를 사용했기 때문에 Java 언어 사용은..
Dalvik의 GC는 CMS 알고리즘을 사용하고, ART GC는 CMS 알고리즘을 개선한 Customed CMS 알고리즘을 사용한다. CMS 알고리즘은 이전 포스팅인 Garbage Collection 동작 방식에서 다룬 적 있기 때문에 이번 포스팅에서는 ART GC인 Customed CMS 알고리즘이 기존 CMS 알고리즘에서 어떻게 개선되었는지에 대해 정리해보려 한다. 이 글은 ART 가비지 컬렉션 디버깅하기를 참고해서 작성했다. ART는 다음과 같이 GC 방법을 개선했다. Dalvik은 STW 횟수가 2회(Initial Mart & Remark)이지만 ART CMS 가비지 컬렉션은 Remark에서만 1회 발생한다. ART에서는 Initial Mark 단계에서 GC thread가 모든 루트 객체를 체크하..
우리가 흔히 말하는 가상 머신은 기본 운영 체제를 기반으로 한 물리적 추상화를 에뮬레이트하는 높은 수준의 추상화로, 가상 시스템을 통해 동일한 플랫폼을 여러 운영 체제 및 하드웨어 아키텍처에서 실행할 수 있다. 여기서 가상 머신은 시스템 가상 머신이 아닌 프로세스 가상 머신을 의미한다. 일반적으로 가상 머신은 다음의 기능을 할 수 있어야 한다. 물리적 CPU가 수행하는 작업을 에뮬레이션 소스 언어를 바이트 코드로 컴파일 명령어 및 피연산자를 포함하는 데이터 구조 (명령어가 처리하는 데이터) 함수 호출 조작을위한 호출 스택 실행할 다음 명령어를 가리키는 IP(=Instruction Pointer) 가상 CPU-instruction dispatcher 명령 포인터로 주소를 지정해서 다음에 수행할 명령어 가져..
Kotlin에서 지원하는 기능 중에서 Kotlin 코드에서 XML 인스턴스로 바로 접근이 가능하도록 도와주는 Android Extension이라는 기능이 있다. XML 인스턴스를 Kotlin으로 가져와서 사용할 수 있도록 만든 프로퍼티를 합성 프로퍼티(Synthetic Property)라고 한다. 이 프로퍼티는 클래스 내에 뷰 ID 이름으로 생성된다. 예를 들어 xml 코드에서 아래와 같은 Button을 하나 정의했다고 가정하자. 이 Button은 Android Extension에 의해 Kotlin의 합성 프로퍼티가 만들어진다. 이 프로퍼티는 아래 예제 코드처럼 Button의 id인 ‘btn_save’를 통해 접근할 수 있다. override fun onCreate(savedInstanceState: B..
강의 초반에 여러 아이템 중에 하나를 선택하기 위한 선택 위젯의 개념이 나왔었다. 선택 위젯의 종류로 ListView, GridView, Spinner 등이 있고, 그 중에 '[부스트코스 PJ2 정리노트] 이벤트와 리스트 뷰'에서 ListView의 사용법에 대해 정리한 적 있다. 하지만 RecyclerView의 많은 장점 때문에 ListView보다는 RecyclerView를 많이 사용한다. RecyclerView의 장점은 다음과 같다. ListView는 상하 스크롤만 지원하지만 RecyclerView는 상하 스크롤과 좌우 스크롤을 모두 지원한다. - 이는 처음 만들어질 때부터 레이아웃을 유연하게 구성할 때 있도록 설계되었기 때문이다. 각각의 아이템이 화면에 보이는 과정에서 뷰홀더(ViewHolder)를 ..
- Total
- Today
- Yesterday
- Algorithm
- ViewHolder
- covariance
- 부스트코스
- pecs
- Python
- personal access token
- SQL
- gson
- Java
- 프로그래머스
- 위험권한
- SQLiteOpenHelper
- DiffUtil
- AsyncListDiffer
- Android
- SQLD
- SOCKET
- RecyclerView
- python3
- 내용제공자
- AndroidStudio
- SQL Server
- 파이썬
- kotlin
- 알고리즘
- GitHub
- MSSQL
- 안드로이드
- RuntimeException
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |