• 1나루토매니아
  • 2뱅이
  • 3푸타코타
  • 4완벽그자체
  • 5해삼
  • 1뱅이
  • 2나루토매니아
  • 3알짜배기
  • 4뱅이
  • 5빙그레우유
Low memory killer / win death / Gallery 선택후 프로세스 종료
연속출석 :
1일 랭킹 : 399위 중장7
45%
45% (1541 /3455)
  • 댓글 0 |
  • 추천 0 |
  • 조회 3463 |
  • 2012-08-07 (화) 15:31
    안녕하세요

    프로젝트 진행중 이슈 사항이 생겼는데. 마땅한 해결방법이나 대안을 찾기 힘들어 이렇게 글을 남겨 봅니다.

    현재까지 테스트 한 결과를 토대로 비슷한 이슈를 가지신 분이나 앞으로 유사한 이슈를 겪으실 분들을 위해

    정보 게시판에 글을 남겨 정보 공유를 하였으면 좋겠다고 생각합니다.


    1. 현상
    앱 -> Intent.ACTION_PICK -> 사진 얻어오기
    위 과정중 안드로이드 내장 Gallery가 실행 된후 앱으로 돌아오면서

    low memory no more background processes
    ActivityManager : win death
    ActivityManager : process ~~~ has died
    ActivityManager : Start proc

    등의 메세지가 발생하면서 앱프로세스가 종료된후 새로 시작하는 경우 입니다.

    튕기는것 또한 아주 간헐적으로, 핸드폰이 많이 느리다고 판단할때 튕김


    2. 메모리
    MediaPlayer를 포함하고 Surface를 사용하는 앱이지만, 실제 메모리 사용량은 몇메가(DDMS 확인)정도
    앱 내부에서 튕기는것은 아님.

    3. 위와 같은 현상으로 인하여 테스트 프로젝트 생성
    모든 동작을 제외하고 ACTION_PICK 만 동작하며, timer로 가용 메모리를 출력하는 프로젝트 (첨부)

    ----
    전체 가용 메모리와 threshold 값, 등을 확인하기 위해 위 메소드를 계속해서 체크하면서 프로그램 돌림

    옵티머스 X2 튕김 : 가용 42메가, threshold 25메가 부근
    Memory Info :: 42.88MB :::::: 44961792, threshold : 25165824

    Low memory killer 등과 관련하여 인터넷을 찾아보면 threshold 값을 기준으로 메모리 확보를 위해

    프로세스를 종료한다고 되어 있습니다. 현재 Gallery가 foreground 이니, 제 앱은 그보다 우선순위가 낮겠죠..

    어쨌든 제가 마지막으로 확인할수 있었던 가용 메모리는 40메가 부근이고, threshold값은 25메가 선이었으나 앱 프로세스는 종료됨


    5. 결론
    ACTION_PICK Intent를 이용하여 앱이 뒤(Background)로 간 경우, 언제든지 위와 같은 문제 가능성이 있음.
    앱 컨트롤 범위를 벗어난 후에 발생하는 문제로써, 대처 방법이 마땅하지 않음
    savedInstance 등을 이용하여 빠르게 프로그램을 복구하는 것이 최선?

    6. 카톡 / 그외 프로그램은??
    카톡과 evernote에서 제법 많은 횟수 테스트를 해 보았으나 아직 튕긴 적은 없습니다.
    가용 메모리가 threshold 부근 까지 내려가질 않더군요 - _-))
    하지만 테스트를 좀더 빡시게 하면 결과가 달라질거라고 믿고 있습니다 ㅠ_ㅜ
    카톡은 action_pick 을 부르기 위한 Activity를 새로 만드는것으로 추정 하고 있습니다. 프로그램 자체가 서비스인지 뭔지... 모르겠네요.

    #. 프로세스 재시작 로그
    06-04 01:41:40.179: E/SensorsHAL(1178): LgeGestureSensor: Invalid index (7) for setDelay
    06-04 01:41:40.179: E/SensorsHAL(1178): LgeGestureSensor: Invalid index (7) for setDelay
    06-04 01:41:40.179: I/System.out(20660): #############################################
    06-04 01:41:40.179: I/System.out(20660): # THREAD 9 STARTED
    06-04 01:41:40.179: I/System.out(20660): #############################################
    06-04 01:41:40.219: I/CacheService(18553): [CacheService.java:329:loadMediaSets()] loadMediaSets()
    06-04 01:41:40.259: I/RenderView(18553): [RenderView.java:781:onDrawFrame()] First Draw
    06-04 01:41:40.380: I/CacheService(18553): [CacheService.java:436:loadMediaItemsIntoMediaFeed()] loadMediaItemsIntoMediaFeed() :카메라_내장(347330322)
    06-04 01:41:40.380: I/GridLayer(18553): [GridLayer.java:1274:onFeedChanged()] Slot changing from -1 to -1
    06-04 01:41:40.391: I/CacheThreadManager(18553): [CacheThreadManager.java:127:run()] .cache thread goes to wait state
    06-04 01:41:40.391: I/CacheThreadManager(18553): [CacheThreadManager.java:209:run()] Thumbnail thread goes to wait state
    06-04 01:41:40.419: I/CacheThreadManager(18553): [CacheThreadManager.java:242:run()] computeThumbnailQueue start
    06-04 01:41:40.419: I/CacheThreadManager(18553): [CacheThreadManager.java:315:run()] computeThumbnailQueue end
    06-04 01:41:40.429: I/ActivityManager(1178): [ActivityRecord.java:444:windowsVisible()] Displayed com.cooliris.media/.Gallery: +343ms
    06-04 01:41:40.479: I/GridLayer(18553): [GridLayer.java:1274:onFeedChanged()] Slot changing from 0 to 0
    06-04 01:41:40.669: I/ActivityManager(1178): Process com.lge.android.analogclock.widget (pid 14596) has died.
    06-04 01:41:40.669: I/ActivityManager(1178): Process hsd.test.gallerys (pid 16207) has died.
    06-04 01:41:40.669: I/WindowManager(1178): WIN DEATH: Window{40b33ec0 hsd.test.gallerys/hsd.test.gallerys.Main paused=false}
    06-04 01:41:40.699: D/WifiStateTracker(1178): [WifiStateTracker.java:913:handleMessage()] WiFiStatetracker.java handleMessage event: 8
    06-04 01:41:40.709: D/Fmc/FmcCallApp(2577): [FmcCallApp.java:1284:onReceive()] onReceive: Intent { act=android.net.wifi.RSSI_CHANGED (has extras) }
    06-04 01:41:40.709: D/_ImsManager(2574): [ImsManager.java:157:onReceive()] ImsManager received a intent: android.net.wifi.RSSI_CHANGED
    06-04 01:41:40.709: D/_ImsManager(2574): [ImsManager.java:245:onReceive()] OnReceive :: WifiManager-RSSI_CHANGED_ACTION :: OutofRange[false]NewRssi[-54]
    06-04 01:41:40.751: I/Gallery(18553): [Gallery.java:630:onPause()] onPause
    06-04 01:41:40.751: I/CacheThreadManager(18553): [CacheThreadManager.java:82:stop()] CacheThreadManager stop.
    06-04 01:41:40.751: I/CacheThreadManager(18553): [CacheThreadManager.java:129:run()] .cache thread has woken up
    06-04 01:41:40.751: I/CacheThreadManager(18553): [CacheThreadManager.java:136:run()] .cache thread has finished
    06-04 01:41:40.751: I/CacheThreadManager(18553): [CacheThreadManager.java:213:run()] Thumbnail thread has woken up
    06-04 01:41:40.751: I/CacheThreadManager(18553): [CacheThreadManager.java:221:run()] Thumbnail thread has finished
    06-04 01:41:40.789: W/libEGL(18553): egl terminate start
    06-04 01:41:40.789: W/libEGL(18553): egl terminate end
    06-04 01:41:40.789: W/libEGL(18553): egl terminate start
    06-04 01:41:40.789: W/libEGL(18553): egl terminate end
    06-04 01:41:40.789: I/RenderView(18553): [RenderView.java:763:onPause()] onPause
    06-04 01:41:40.789: I/RenderView(18553): [RenderView.java:773:onPause()] onPause RenderView
    06-04 01:41:40.789: I/Gallery(18553): [Gallery.java:680:onPause()] onPause Gallery
    06-04 01:41:40.799: I/ActivityManager(1178): process name to start: hsd.test.gallerys
    06-04 01:41:40.799: I/ActivityManager(1178): Start proc hsd.test.gallerys for activity hsd.test.gallerys/.Main: pid=20685 uid=10156 gids={}
    06-04 01:41:40.979: D/skia(20685): SHAPER: stream created /data/data/com.jungle.app.fonts/tmp/SJjunglego.ttf.. 0x2AA4A0
    06-04 01:41:41.139: D/dalvikvm(1178): GC_EXPLICIT freed 874K, 38% free 8665K/13959K, external 5585K/6975K, paused 81ms
    06-04 01:41:41.149: E/Main(20685): [Main.java:37:onCreate()] OnCreate
    06-04 01:41:41.149: E/Main(20685): [Main.java:38:onCreate()] OnCreate


    현재까지 저의 테스트 결과는 위 결론과 같습니다. 해결 방법도 마땅치 않구요.
    더 나은 결과나 결론이 나오면 공유하겠습니다.
    여러분들도 알고계신 이슈나 결과가 있으면 공유 부탁드립니다. 꾸벅
     


    [이 게시물은 더어플님에 의해 2016-07-12 15:23:56 개발 꿀팁에서 복사 됨]
    댓글을 작성하시려면 로그인을 하셔야지만 작성가능합니다. [로그인하기] [회원가입하기]
    번호 제목 글쓴이 추천 조회 작성일
    104 안드로이드 기초 프로그램 1개 실습 및 작성 방법의 설명 GNCkorea 1 4360 12/08/10
    103 향상된 500만 화소 iSight 카메라 기능 GNCkorea 0 4362 12/08/02
    102 갤럭시 S2 체크하나로 "해제하려면.." 문구 제거 GNCkorea 0 4363 12/08/08
    101 젤리빈 로그캣 변경점 GNCkorea 1 4396 12/08/10
    100 갤투 cm9 (aosp/aokp) 등등에서 자이로센서 문제 해결방… GNCkorea 0 4441 12/08/04
    99 아이폰 5, 왜 NFC가 빠졌나? +4 GNCkorea 0 4501 12/09/16
    98 Mac에서 ICS 스마트폰을 이동식디스크로 연결하는 방법! GNCkorea 0 4507 12/08/08
    97 최고의 웹앱 개발 프레임워크 GNCkorea 1 4528 12/08/10
    96 [삼성] 갤럭시 SⅢ 숨겨진 기능 11가지 +5 GNCkorea 1 4578 12/09/16
    95 베가 레이서2 카메라 기능 살펴보기 +2 GNCkorea 2 4591 12/08/01
    94 모든 스마트폰의 데이터싱크와 충전을 하나로! 아이베츠… +14 GNCkorea 6 4665 13/03/18
    93 갤플 순정펌웨어에서 시스템 파일 추출하기. GNCkorea 0 4677 12/08/08
    92 옵티머스 LTE2에 들어간 스냅드래곤 S4 성능은? +1 GNCkorea 1 4695 12/07/31
    91 베가 NO.6 V 터치 기능 +22 GNCkorea 8 4709 13/03/24
    90 넥서스7 루팅하기 (아무것도 없이 따라만 오세요) +1 GNCkorea 0 4757 12/08/07
    89 안드로이드 프로그램이 죽는 경우 디버깅 방법 GNCkorea 1 4774 12/08/09
    88 논란의 뉴아이패드 vs 아이패드2 게임 그래픽 정리 +1 GNCkorea 1 4804 12/08/01
    87 Image 파일이 저장되는 리얼경로 알려주기. GNCkorea 0 4817 12/08/10
    86 갤럭시S II, 테이크 야누스, 이보 4G+, 아트릭스 - 모바… +1 GNCkorea 1 4888 12/08/01
    85 안드로이드 초보를 위한 DVR 사용법(2) GNCkorea 0 4963 12/07/25
    84 스마트폰, 구글 기본 서비스 110% 활용하기 +17 GNCkorea 6 5013 13/03/18
    83 GPS 휴대폰, 활용하는 방법 +15 GNCkorea 4 5063 13/03/18
    82 갤럭시S3 LTE SKT 대기상태표기버그 수정본 + 소프트키 … GNCkorea 0 5071 12/08/08
    81 안드로이드 강좌 4 - 액티비티(Activity), 뷰(View), 레… GNCkorea 1 5075 12/08/09
    80 안드로이드 개발 시, Selector XML을 편하게 만들어봅시… GNCkorea 1 5093 12/08/10
    79 데이터 네트워크(3G, 4G)로 셀프 업그레이드 하는 방법 +14 GNCkorea 5 5100 13/03/18
    78 윈도우에서 사진스트림 업로드가 안되는 이유와 간단한 … +3 GNCkorea 1 5134 12/07/29
    77 안드로이드 강좌 5 - XML에서의 TextView, ImageView, L… GNCkorea 1 5138 12/08/09