DevBoi

[Java] List 메모리관리 본문

Language/[Java]

[Java] List 메모리관리

HiSmith 2022. 11. 10. 10:58
반응형

갑자기 사이드 프로젝트하다가 생각나서 정리했다.

 

ArrayList 를 1천 ~ 2천건 , List<Map<? extends UserDto>> 이런식으로 For 처리하는 부분이 있었다.

물론, 보통적인 케이스에서는 문제가 되지는 않는다.

 

근데.. 걱정되는건 이용자수가 급증 하면서 OOM으로 Java process가 kill되면?

사람이 몰리면 꺼지는 서버가 된다...그래서...

변수를 비워주자, 즉 메모리 관리를 해주자는 것이다.

 

ArrayList나 List의 메모리 비워주는 법, 혼동되는 의미로 객체를 초기화해줄수있는 방법은 크게 2가지가있다.

 

1. null로 명시

2. clear() 펑션 사용

 

 

1번의 경우, 확실히 해당 메모리 점유를 해제하면서 비워준다.

2번의 경우 메모리에는 남아있지만, 해당 객체가 다른 곳의, 즉 빈곳의 주소를 보게 된다.

 

2번의 의미로는 대량의 데이터가 메모리에는 남아있으나, 해당 객체에서 사용하지 않는 것으로 처리되며

물론 한 메소드가 끝나면, unreachable object가 되면서 pop, 메모리 해제가 되겠지만

메소드가 길면, OOM을 일으킬수도있다.

 

따라서, 1번으로 진행, 메모리 효율 확보를 하였다.

반응형