코린이 탈출기
kotlin - Enum class의 메모리 본문
메모리... 참 비전공자인 저에게는 코딩을 할 때 생각하기 제일 어려운 부분이더라구요.. ㅠㅠ 기본의 중요성을 매번 느낍니다...
코드를 작성하다 보니 enum class 이것이 저에게는 매우 골칫덩어리였습니다!! 가시성을 좋게 하려고 아무 생각 없이 막 사용하고 있더라구요!!!
그래서 enum class에 대해 사용법과 예시를 보다가 메모리 관련하여 공부를 해보았습니다!!
많은 블로그 글을 읽어보면 안드로이드 개발이 오랫동안 enum class를 권장하고 있지 않다는 글을 접할 수 있었습니다. 하지만 현재에는 열거형을 사용하지 말라는 공식 지침은 더 이상 존재하지 않습니다!!!
과거의 enum class를 지양하던 이유에 대해 자세하게 알고 싶으시다면 해당 동영상(4:48)을 시청해 보세요!! 아주 친절하고 재밌게 보았습니다!!! 요약하자면 상수에 비하여 enum class는 dex를 약 13배 더 많이 소비하여 메모리적으로 문제가 있었다고 합니다.
영상을 보고 그럼 enum class는 메모리가 언제 할당되며, 어떻게 사용하여야 할지 고민하게 되었습니다. 저의 경우 enum class를 사용하는 화면의 class 안에다가 작성을 하여 당연하게 해당 class를 객체화할 때 생성된다고 생각하였습니다. 하지만 구글링을 통해 알아본 결과 싱글통의 생성 방법 중 하나가 enum class라는 사실을 알게 되었습니다!!! 충격...
결론적으로 enum class는 사용할 때마다 생성하여 메모리를 사용하는 것이 아닌, 시작부터 종료까지 1번만 생성하여 고정된 메모리 영역을 가진다는 것입니다!!!
글을 정리하자면 이전에는 메모리적 문제로 인해 enum class 사용을 지양하였으나, 현재 기술의 발전과 핸드폰의 메모리(RAM) 증가로 인해 크게 메모리를 신경 써도 되지 않는다고 하였습니다.
해당 내용을 정리하여 몇몇 분과 대화를 한 결과!!! 위와 같이 현재는 '핸드폰 메모리가 증가하였으니 이런 걸 굳이 신경 쓰지 않아도 된다 vs 사용자가 앱을 하나만 사용하는 것이 아니니 그래도 신경 쓰면 좋다'로 나뉘었습니다!! 여러분의 생각은 어떠하신가요?!!?
코딩하며 알게 된 사실을 공유하고 싶어 글을 끄적였는데, 부자연스럽네요...ㅠㅠ 그래도... 잊기 전에... 글을 정리해 봅니다!!!
혹시 틀린 부분이 있거나 다른 의견이 있으시면 글 달아주세요!!!
코린이에게 아주 큰 도움이 됩니다 ><
참고
https://techblog.woowahan.com/2527/
https://medium.com/trade-me/android-then-and-now-intro-intdef-enums-bca22d5cca56
'코틀린' 카테고리의 다른 글
| kotlin - shuffle() vs shuffled() (0) | 2022.07.04 |
|---|---|
| 표현식 vs 구문 (0) | 2022.03.24 |