마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

갤럭시 s7, s8 같은 고해상도 기기의 메모리 할당량이 얼마인가요?

0 추천
1. 현재 만들고 있는 앱을 제 폰 (1280X720, 오레오)에서 실행시키니

   메모리가 최대 메모리 128MB 중 20MB 정도 쓰이네요.

   태블릿(1920 X 1200, 롤리팝)에서 실행시키니 최대 메모리 100MB에 60MB정도 쓰이고요.

   고해상도로 갈수록 메모리 사용량이 급증하는데, 갤럭시 s시리즈의 초고해상도에서 작동이 될련지 모르겠네요.

  2960 X 1440 해상도의 기기에선 앱에 할당하는 기본 메모리가 얼마나 되나요?

 

2. 리사이클러뷰 어댑터 생성자에 액티비티의 context를 전달해

  어댑터의 생성자에서 new WeakReference<>(context)로 Weak Reference를 생성해 사용하는데,

   이 weakReference의 Null Check를 생성자 밖에서 항상 해야할 필요가 있을까요?

   weakReference의 Null Check 목적이 참조된 객체가 가비지 컬렉션 된 경우를 위한 건데,

   어댑터는 액티비티에 생명주기에 속한 객체라 굳이 Null Check가 필요할 지 모르겠네요.

  어댑터가 살아 있는 한 액티비티도 살아있으니 액티비티가 가비지 컬렉션될 일이 없을 텐데요.
franny (1,760 포인트) 님이 2019년 2월 3일 질문
franny님이 2019년 2월 3일 수정
제가 질문드리는 메모리는 Heap Size를 말합니다.
final long maxMemory = Runtime.getRuntime().maxMemory() / 1024 / 1024;
에서 maxMemory가 궁금합니다.
(Manifest의 android:largeHeap="false" 기준입니다.)
보통 제조사에서 안드로이드 가이드 라인에 따라 스크린 해상도에 비례에
힙 사이즈 용량을 결정하는데,  반드시 고해상도라고 힙 사이즈를 넉넉하게
 할당하는 건 아닌 것 같네요.

갤럭시 s7,8,9 시리즈 보유하신 분 계시면 힙 사이즈가 어느 정도 되는 지 알려주시면 감사하겠습니다.

1개의 답변

0 추천
 
채택된 답변
안녕하세요.

이게 별도의 스레드로 동작하는 경우에는 Context가 사라지는 경우가 있기 때문에 그렇게 하는데요.. 예로 AsyncTask에 Context를 생성자로 받으면 WeakReference로 감싸서 처리하는 경우..

개인적으로는 이게 의미가 없다고 생각합니다. AsyncTask가 너무 오래 동작을 해서 Context를 너무 오래 해제하지 않는 경우가 발생한다고, 코드 레벨에서 고민을 해야 될 것 같습니다.

그리고, 기기별 힙 사이즈는 http://sjava.net/2013/07/adb-툴을-사용해서-android-디바이스-정보-확인-및-사용하기/ 를 한번 확인해 보세요.

제가 예전에 비슷한 고민을 했었고, 기기별 힙 사이즈 정보를 확인하는 방법을 확인하실 수 있습니다. adb나 코드 레벨에서도 확인가능합니다.
mcsong (44,040 포인트) 님이 2019년 2월 5일 답변
franny님이 2019년 2월 7일 채택됨
...