흔히들 말하는 '롤리팝 메모리 누수'에 대해
몇 가지 꼭 아셔야할 것들이 있는거 같아 작성합니다.
1. "버그 없는 소프트웨어는 없다" <==> "메모리 누수 없는 소프트웨어는 없다"
비슷한 맥락입니다. 버그 없는 소프트웨어는 없듯이 메모리 누수 없는 소프트웨어도 없습니다.
리눅스 커널도 메모리 누수 있으며 4.0+ 버전에서도 계속 보고되며 픽스되는 등 뫼비우스의 띠를 돌듯 개발 과정에서 반복되는 사이클입니다.
2. 킷캣도 당연히 메모리 누수 있습니다.
롤리팝 설정 앱에서 "시스템 메모리"라고 따로 표시되는 기능이 추가되어 롤리팝에서만 심해보일 뿐입니다.
롤리팝 전에는 계속 "가용램 적네요"라고 하셨잖아요? 같은 맥락입니다.
3. 이번 롤리팝에서 유난히 심해보이는 이유
(특정 상황에서) 그래픽 자원이 메모리에서 내려가지 않는 ColorFade의 잘못된 코드와 커널 단에서 여러 새로운 시도를 하느라 메모리 할당량이 늘거나 새로운 메모리 할당에 문제가 생긴건 사실입니다.
ColorFade쪽은 CyanogenMod 12.0를 비롯한 여러 커스텀롬, artware, 공식 Android 5.1에서 수정되었습니다. (기타 Android 5.0 제조사 롬들은 모르겠네요)
커널 쪽은 제조사마다 다르겠지만 넥서스를 기준으론 Android 5.0때 뭔가 망친건 분명합니다.
넥서스 7은 동영상 재생도 뻑나고
넥서스 5는 멀티태스킹 성능이 눈에 띌 정도로 훨씬 뒤 떨어지는 등..
(번외론 Android 5.1에서 커널을 집중공략해 메모리 효율을 개선한 시도가 눈에 띕니다.
그래픽쪽만 20-30개 정도 커밋되었고 fs/seq_file.c 에도 여러 커밋이 되었습니다.)
4. 삼성 VS LG?
LG쪽은 잘 안봐서 솔직히 정확히 말씀은 못 드리겠습니다.
다만 "이럴 가능성도 있다"는 전제하에 말씀드리겠습니다.
경량화 되어있기로 유명한 AOSP와 비교해도 LG 롤리팝 펌웨어의 시스템 메모리 할당량이 적어도 너무 이상할 정도로 적습니다.
설정 앱에서 시스템 메모리 표기되는 계산 공식을 LG가 변경했을 수도 있다는 점과 오픈소스이기에 그렇게 변경해서 눈속임해도 절대 문제될거 없다는 점도 알아두세요.
"캐쉬된 프로세스 표시"에 나온걸 보셔야 남은 메모리가 정확히 나오는겁니다.
5. Android 5.1
안그래도 5.0때 메모리 누수로 욕 엄청 먹었는데 구글이 미쳤다고 가만히 앉아서 도넛만 먹진 않았을거란 말입니다, UI가 비슷하다고 내부도 비슷할 착각은 버리세요.
위에서 말씀드렸듯이 메모리 누수에 큰 비중을 차지하는 ColorFade는 이미 5.1에 픽스되었고 커널 단에서도 많은 개선이 이루어졌습니다.
프레임워크(자바)에서도 많은 메모리 개선이 이루어졌고
ART 런타임에서도 (5.0 Xposed가 더 이상 호환되지 않을 정도로) 어마어마한 변경사항들이 있었습니다.
CyanogenMod 12.1을 사용하는 유저로써 말씀드리자면 12.0와는 차이가 느껴질 정도로 빨라지고 메모리 관리 효율이 개선되었습니다(주관적 입장).
앞으로 "이거 메모리 누수인가요?"라는 식의 게시글엔 모든 앱 종료 후 "캐쉬된 프로세스 표시" 스크린샷을 띄우는게 훨씬 정확한 비교가 될겁니다.
시스템/앱 메모리 표기 따로따로 보시면서 "와 이 롬 만든 놈들 개적화했네" 하시지 말고 모든 앱 종료 후 "캐쉬된 프로세스 표시"에서 나오는 "사용 가능 메모리"로 비교하세요.
몇 가지 꼭 아셔야할 것들이 있는거 같아 작성합니다.
1. "버그 없는 소프트웨어는 없다" <==> "메모리 누수 없는 소프트웨어는 없다"
비슷한 맥락입니다. 버그 없는 소프트웨어는 없듯이 메모리 누수 없는 소프트웨어도 없습니다.
리눅스 커널도 메모리 누수 있으며 4.0+ 버전에서도 계속 보고되며 픽스되는 등 뫼비우스의 띠를 돌듯 개발 과정에서 반복되는 사이클입니다.
2. 킷캣도 당연히 메모리 누수 있습니다.
롤리팝 설정 앱에서 "시스템 메모리"라고 따로 표시되는 기능이 추가되어 롤리팝에서만 심해보일 뿐입니다.
롤리팝 전에는 계속 "가용램 적네요"라고 하셨잖아요? 같은 맥락입니다.
3. 이번 롤리팝에서 유난히 심해보이는 이유
(특정 상황에서) 그래픽 자원이 메모리에서 내려가지 않는 ColorFade의 잘못된 코드와 커널 단에서 여러 새로운 시도를 하느라 메모리 할당량이 늘거나 새로운 메모리 할당에 문제가 생긴건 사실입니다.
ColorFade쪽은 CyanogenMod 12.0를 비롯한 여러 커스텀롬, artware, 공식 Android 5.1에서 수정되었습니다. (기타 Android 5.0 제조사 롬들은 모르겠네요)
커널 쪽은 제조사마다 다르겠지만 넥서스를 기준으론 Android 5.0때 뭔가 망친건 분명합니다.
넥서스 7은 동영상 재생도 뻑나고
넥서스 5는 멀티태스킹 성능이 눈에 띌 정도로 훨씬 뒤 떨어지는 등..
(번외론 Android 5.1에서 커널을 집중공략해 메모리 효율을 개선한 시도가 눈에 띕니다.
그래픽쪽만 20-30개 정도 커밋되었고 fs/seq_file.c 에도 여러 커밋이 되었습니다.)
4. 삼성 VS LG?
LG쪽은 잘 안봐서 솔직히 정확히 말씀은 못 드리겠습니다.
다만 "이럴 가능성도 있다"는 전제하에 말씀드리겠습니다.
경량화 되어있기로 유명한 AOSP와 비교해도 LG 롤리팝 펌웨어의 시스템 메모리 할당량이 적어도 너무 이상할 정도로 적습니다.
설정 앱에서 시스템 메모리 표기되는 계산 공식을 LG가 변경했을 수도 있다는 점과 오픈소스이기에 그렇게 변경해서 눈속임해도 절대 문제될거 없다는 점도 알아두세요.
"캐쉬된 프로세스 표시"에 나온걸 보셔야 남은 메모리가 정확히 나오는겁니다.
5. Android 5.1
안그래도 5.0때 메모리 누수로 욕 엄청 먹었는데 구글이 미쳤다고 가만히 앉아서 도넛만 먹진 않았을거란 말입니다, UI가 비슷하다고 내부도 비슷할 착각은 버리세요.
위에서 말씀드렸듯이 메모리 누수에 큰 비중을 차지하는 ColorFade는 이미 5.1에 픽스되었고 커널 단에서도 많은 개선이 이루어졌습니다.
프레임워크(자바)에서도 많은 메모리 개선이 이루어졌고
ART 런타임에서도 (5.0 Xposed가 더 이상 호환되지 않을 정도로) 어마어마한 변경사항들이 있었습니다.
CyanogenMod 12.1을 사용하는 유저로써 말씀드리자면 12.0와는 차이가 느껴질 정도로 빨라지고 메모리 관리 효율이 개선되었습니다(주관적 입장).
앞으로 "이거 메모리 누수인가요?"라는 식의 게시글엔 모든 앱 종료 후 "캐쉬된 프로세스 표시" 스크린샷을 띄우는게 훨씬 정확한 비교가 될겁니다.
시스템/앱 메모리 표기 따로따로 보시면서 "와 이 롬 만든 놈들 개적화했네" 하시지 말고 모든 앱 종료 후 "캐쉬된 프로세스 표시"에서 나오는 "사용 가능 메모리"로 비교하세요.