개발

자바 배열 자르기 subList의 문제점과 해결 방법

snow-line 2020. 11. 29. 23:45
반응형

자바에서 리스트를 담을 때 주로 List를 사용하는데 리스트의 원소를 잘라서 사용해야 할 경우에 subList 함수를 사용한다.

 

이때 subList를 사용하여 자른 원소를 사용하다 보면 메모리 누수가 발생할 수 있다.

List<Integer> list = Lists.newArrayList(1,2,3,4,5);

list.subList(0, 2);

 

ArrayList의 List는 자신이 생성된 부모(parent) 객체 정보를 가지고 있기 때문에 불필요한 메모리를 점유하기 때문이다.

이를 방지 하기 위해서는 Lists.newArrayList 안에 subList한 배열을 넣어서 따로 리스트를 생성하면 된다.

List<Integer> list = Lists.newArrayList(1,2,3,4,5);

List<Integer> newList = Lists.newArrayList(list.subList(0, 2));

 

 

반응형