글 수 143
로그인 없이 자유롭게 사용하세요. 모든 게시판의 자료는 비회원도 열람 및 쓰기가 가능합니다.
악성 스팸과 광고성 글로 인하여 회원 가입을 중단합니다. 글쓰기를 원하시면 이 곳에 글을 남겨주시면 조치해드리겠습니다.
네 저도 그렇게 생각합니다.
DOM파서를 쓰는 것 자체가 잘못됐다고...
크기가 큰 XML문서를 읽으면,
메모리 OutOfMemory가 발생할 수밖에 없더군요.
그래서 XMLPullParser로 변경하려고 합니다.
만만치 않겠지만요...
MFam
댓글
2011.11.07 23:48:39
지금쯤이면 완성 하셨을려나... ㅎㅎ
안녕하세요.

제가 격고 있는 상황은 아무래도
크기가 큰 xml을 읽으면서.. Document 객체로
만드는 과정으로 인해서 생기는 것 같습니다.
XmlPullParser나 SAXParser를 사용하면
나아지지 않을까라는 생각을 하는데..
그렇게 수정하려면.. 꾀 꼬쳐야되서...ㅠㅠ

xml로 들어오는 파일 크기가 거의 800KB 정도 되는데..
Document로 만드면서... 그 이상의 메모리가 소비되는 것 같습니다.
거의 아무일도 하지 않는 App을 실행하면 Java힙 메모리를 2M정도 차지 하더군요.
제 앱은 4~5M정도 차지 합니다.
크기가 작은 xml을 읽으면 6~7M정도 늘어나죠.
하지만 800KB크기의 xml을 읽으면 12~13M까지 늘어납니다.
이 크기중 작은 xml을 읽는 메모리가 해제가 되지 않아서 포함된 크기일 수 도있습니다.
그렇다고해도 10M가 넘어갑니다. 고작 800KB 크기의 파일을 Document로 만드는데 말이죠.
아무래도 Parser를 Document로 만드는게 아니라..
XmlPullParser를 이용해서 일정 개수이상일 경우에 더 이상 xml을 파싱하지 않고 나가도록
하는게 나을 수도 있다고 생각이 드네요.

아직 해결책을 찾지는 못했습니다.ㅠㅠ
MFam
댓글
2011.10.28 21:48:58
저도 많은 것을 배워가고 있어서 너무 좋네요 ^ ^
움....... 이번에도 역시나 자세한 답글은 블로그에...;;
안녕하세요.
MFam님은 메모리관리를 어떻게 하시나요?
안드로이드를 하면서 요즘 메모리관리의 필요성을 느끼게 하는군요.
16M를 넘었다며 OutOfMemory라는 메시지와 함께 App을 죽여버리네요.

Bitmap의 해제의 중요성을 여실히 알게 합니다.
그리고 용량이 커질 가능성이 있는 데이터는 File로 관리하는 것도 고려해봐야겠다는 생각이 들게 했습니다.

혹시 InputStream과 BufferedInputStream의 차이를 정확히 아시나요?
Buffered가 붙으면 일정 크기의 메모리를 할당하고, 처리를 할 것 같은데..
이 두개의 메모리 사용을 어떻게 하는지.. 아신다면 댓글 좀 달아주세요.
제 블로그에도 달아주신다면 감사하구요~
MFam
댓글
2011.10.28 12:54:48
블로그에 직접 글 남길께요 ㅎㅎ
쓸만한 이어폰
cresyn // c415e
안녕하세요.
제 블로그에 방문해주셔서 감사합니다.
Study에 안드로이드 자료가 많으시네요..
서로 질문도 하고 답변도 해주시고..
같이 윈윈해요~
MFam
댓글
2011.10.21 10:02:09
앗! 호군님. 어서오세요. ㅎㅎ
간간히 보이는 자료랑, 제가 기억해놔야 할 것을 메모해놨어요 ㅎㅎ
간간히 들러서 안부 남길께요.
네~ 공유하는 프로그래머! 화이팅! ㅋ