본문 바로가기

프로그래밍 놀이터2030

[Java] Generational Concurrent GC 에 대해 알아보자 https://www.ibm.com/support/knowledgecenter/en/SSB23S_1.1.0.2019/com.ibm.java.vm.80.doc/docs/mm_gc_generational.html -Generational Concurrent Garbage Collection 전략은 짧은 기간동안만 존재하는 object 가 많은 앱에 적합하다. --Xgcpolicy:gencon command line option 으로 해당 GC 를 activate 시킬 수 있다. -Java heap 은 두 영역으로 나뉜다.하나는 새로운(new or nursery) 영역, 그리고 다른 하나는 오래된(old or tenured(재임)) 영역이다.new area에 생성된 objects 들이 오랜 기간동안 참조를 유.. 2020. 7. 28.
[android] ART 의 JIT (Just-In-Time) Compiler 에 대해 알아보자 https://source.android.com/devices/tech/dalvik/jit-compiler -Android runtime (ART) 는 Just-in-time (JIT) compiler 를 사용하여 안드로이드 앱이 동작할 때 지속적으로 빨라질 수 있게 프로파일링 하고 개선한다. (돼왕: NOS 부터 둘을 같이 사용)JIT compiler 는 ART 의 현재 ahead-of-time (AOT) compiler 를 보조하여, 실행 성능을 개선하고, 저장 공간을 줄이며, system update 를 빠르게 한다. (돼왕 : 최초 설치시에는 dex2oat 로 compile 하지 않고, 자주 사용하는 앱들에 대해 추후 compile 을 진행하는 방식)이는 앱 자동 업데이트나 OTA 를 통한 업데이.. 2020. 7. 27.
[android] App 이 kill 되면 Alarm 이나 Job 은 어떻게 될끼? https://github.com/evernote/android-job/wiki/FAQ#what-happens-with-jobs-after-the-app-was-forced-killed -앱이 recent app list 등에서 swipe 를 통해 force kill 당하면, 안드로이드는 AlarmManager 에 등록되어 있는 Pending alarm 들을 모두 clear 시켜버린다.그래서 앱이 다시 launch 할 때 또는 boot_complete 등의 broadcast 를 받아서 새로 job 을 등록해줘야 한다. JobScheduler 나 GcmNetworkManager 등에 등록된 Job 들은 force kill 에 영향을 받지 않는다. -필자의 경험에 의한 확인 결과, 앱 설정(Applicati.. 2020. 7. 26.
[android] Recent app 에서 swipe 로 app 을 죽이면 process kill 이 될까? -Recent app 에서 app 을 swipe 해서 kill 시켰을 때 동작에 대한 공식 doc 은 발견하지 못했다.doc 으로 명시하기에는 조건이 너무 까다롭거나, 혹은 유연하게 변경하기 위함이라고 추정된다. -그래서 구글링을 해보았다.대부분의 결론은 이렇다.Recent app 에서 app kill 시키는 것은 process kill 과 다르다.Activity stack 을 모두 날려버리는 것으로 생각하는 것이 좋다.음악 서비스가 돌고 있을 때 Recent app 에서 swipe 로 죽인다고 음악이 멈추지는 않는걸 생각해봐라. -그런가보다... 하고 실제 테스트를 해보았다.일단 bg service 같은 거 없이 그냥 "Hello World!" 를 표시하는 Activity 를 하나 띄워놓고, recen.. 2020. 7. 25.
[android] JobScheduler dumpsys log 분석해보자 -이 명령을 통해 dumpsys 중에 jobscheduler 에 대한 정보들만 발췌해 볼 수 있다.$ adb shell dumpsys jobscheduler -그 중에서 내가 등록한 Job 에 대해 한번 보자.JOB #u0a241/2: b002751 com.cklee.test/.scheduler.MyJobService u0a241 tag=*job*/com.cklee.test/.scheduler.MyJobService Source: uid=u0a241 user=0 pkg=com.cklee.test JobInfo: Service: com.cklee.test/.scheduler.MyJobService Requires: charging=false batteryNotLow=false deviceIdle=false.. 2020. 7. 24.
[책 정리] 09.소프트웨어 설치하기 - 리눅스 커맨드라인 쉘 스크립트 바이블 패키지 관리 기초 -리눅스 배포판은 각 소프트웨어 앱 및 라이브러리 설치를 제어할 수 있는 몇 가지 유형의 패키지 관리 시스템(PMS)을 사용한다.PMS 는 이러한 항목들을 추적하기 위해 DB 를 사용한다. 리눅스 시스템에 어떤 소프트웨어 패키지가 설치되어 있는가? 각 패키지마다 어떤 파일이 설치되어 있는가? 설치된 소프트웨어 패키지 버전은 각각 얼마인가? 소프트웨어 패키지는 저장소(레포지토리)라는 서버에 저장되고 인터넷으로 내 리눅스 시스템에서 구동되는 PMS 유틸을 통해 저장소에 접근할 수 있다.새로운 소프트웨어 패키지 또는 이미 시스템에 설치된 소프트웨어 업데이트를 검색하기 위해 PMS 유틸을 사용할 수 있다. PMS 는 의존성을 감지하고 원하는 패키지를 설치하기 전에 추가로 필요한 소프트웨어 패키.. 2020. 4. 29.
[책 정리] 08-2. 파일 시스템 관리하기 - 리눅스 커맨드라인 쉘 스크립트 바이블 논리 볼륨 관리하기 -파티션 확장은 같은 실제 하드 드라이브에 사용 가능한 공간의 범위까지로 제한된다.하드 드라이브에 더 이상 사용할 수 있는 공간이 없다면 더 큰 하드 드라이브를 구해서 수동으로 새 드라이브에 기존의 파일시스템을 옮겨야 한다.이보다 편리한 방법은 다른 하드 드라이브 파티션을 기존의 파일시스템에 추가함으로서 기존의 파일시스템에 동적으로 더 많은 공간을 추가하는 방법이다.리눅스 논리 볼륨 관리자(Linux Logical Volume Manager, LVM) 소프트웨어 패키지가 이런 일을 할 수 있다.LVM 은 전체 파일 시스템을 재구축할 필요 없이 리눅스 시스템의 디스크 공간을 조작할 수 있는 쉬운 방법을 제공한다. * 논리 볼륨 관리 레이아웃 살펴보기 -여러 PV(Physical volu.. 2020. 4. 28.
[책 정리] 08-1. 파일 시스템 관리하기 - 리눅스 커맨드라인 쉘 스크립트 바이블 리눅스 파일시스템 살펴보기 * 기본적인 리눅스 파일시스템 이해하기 ** 파일 시스템 살펴보기 -리눅스 운영체제와 함께 도입된 원래의 파일시스템은 확장 파일시스템(extended filesystem, ext)라고 한다.이 시스템은 물리적 장치를 다루기 위해 가상 디렉토리를 사용하고, 물리적 장치에 고정 길이의 블록을 이용해서 데이터를 저장하는 유닉스와 비슷한 파일시스템이다.ext 파일시스템은 가상 디렉토리에 저장되어 있는 파일에 대한 정보를 추적하기 위해 아이노드(inode)라는 시스템을 사용한다.아이노드 시스템은 각각의 물리적 장치마다 파일 정보를 저장하기 위해 아이노드 테이블이라는 것을 만든다가상 디렉토리에 저장되는 각 파일은 아이노드 테이블에 항목을 가진다. ext 의 extended 는 다음의 항목.. 2020. 4. 27.
[책 정리] 07. 리눅스 파일 사용 권한 이해하기 - 리눅스 커맨드라인 쉘 스크립트 바이블 리눅스 보안 -리눅스 보안 시스템의 핵심은 사용자 계정이다.리눅스 시스템에 접속하는 개별 사용자는 각자 고유한 사용자 계정이 있어야 한다.시스템에 있는 개체에 대한 사용자의 권한은 로그인한 사용자 계정에 따라 달라진다. 사용자 권한은 계정이 만들어질 때 할당되는 사용자 ID 인 UID 로 추적된다.리눅스 시스템은 시스템의 사용자 계정을 추적하고 관리하기 위한 특수한 파일 및 유틸을 사용한다. * /etc/passwd 파일 -리눅스 시스템은 로그인 이름과 그에 해당하는 UID 값을 찾기 위해 특별한 파일을 이용한다.이 파일은 /etc/passwd 파일이다.여기에는 사용자에 대한 여러 정보가 포함되어 있다. -root 사용자 계정은 리눅스 시스템의 관리자이며 항상 UID 0 이 할당된다.리눅스 시스템은 실제.. 2020. 4. 26.