지금 화면전환에서 프로그램이 죽습니다.


죽는 위치는 정확하게 setContentView입니다. 여기서 xml로 정의한 레이아웃을(메인화면)을 컨텐트 시키는데


메인으로 올라가는 이미지가 용량이 좀 큽니다.


그리고 가로 세로 화면이 있어서 똑같은 파일명으로 xml파일이 각 가로 세로 폴더에 들어가 있는데


setContentView에서 그 파일명으로 한번만 해주는거 봐선 한번 하면 알아서 가로 세로 다 해주나? 하고 추측만 하고 있습니다.


죽는건 Out of memory on a 16377616-byte allocation. 이 이유로 죽고 인터넷 찾아본 결과 메모리 오버플로우


영어 대충 해석 해봐도 메모리 오버 플로우!!!


근데 저기 숫자 보면 60메가던가? 그런데 저만큼 오버 했다는 건가요?


setContentView는 onCreate 메소드 안에 있는데 화면 전환할 때마다


setContentView가 호출이 되는데 그때마다 인스턴스가 생성되서 오버플로나서 죽는구나! 라고 짐.작. 중입니다.


근데 원래는 되긴 됐는데 중간에 랜덤하게 죽었었는데 그거 고치려다가 어떻게 좀 수정했는데...


지금은 100% 죽습니다. 어차피 잡아야할 잠재적 에러였기 때문에 100% 죽는건 상관이 없는데...


흠... 왜 죽지;;


안드로이드가 setContentView 할때마다 인스턴스 생성한다고 치면 그리고 이미지가 너무 커서 죽는거라고 치면


이미지를 통째로 메모리에 올리나요? 이미지 경로? 주소?만 참조하는 그런 방식이 아닌?


메모리 오버날만큼 용량도 안되는것 같은데...


플래그 변수를 만들어서 프로그램이 맨 처음 실행될 때 한번만 setContentView되게 해볼까도 생각했으나...


이게 메모리 오버때문에 죽는거라면... 그리고 한번 setContentView 했을때 남은 메모리가 간당간당 하다면


가비지 컬렉터가 언제 메모리를 회수 해줄지 모르는 상황에서 다른 레이아웃을 setContentView 했을 때 또 사망하실수가 있을거라 생각되서


임시방편으로 해결해서는 안될것 같습니다...


혹시 이와 같은 문제점을 겪으셨다가 해결하셨거나... 문제점이 뭔지 아시는분은...


답변 부탁드리겠습니다 ㅠ


근데 메모리 오버 플로우가 또 아닌것 같은게... 인스턴스가 계속 생성이 되서 그것 때문에 죽는거면  첨에 랜덤으로 죽을 때


한방에 갈때도 있고 수차례에서 수십차례 해야 죽을때도 있었는데...


가비지 컬렉터가 사력을 다해서 메모리를 해제해줬었나???


에뮬레이터에서 돌리려니까 Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE 에러가 나는데


찾아보니까 메모리 부족이라는데...


이거 봐선 메모리 오버 때문에 죽는게 거의 확실한것 같은데...


맨 처음엔 왜 됐었지...