자바로 프로그램을 짜다보니 메모리 할당과 해제에 대해서 전혀 생각을 안하고 있었다. 그러다가 오늘 배두넷 만들기라는 책에서 나온 특이한 링크드 리스트! 당연히 링크드 리스트는 동적 메모리 할당이라고 여겨왔건만... 그렇게 당당하게 최대 사이즈를 고정시켜놓고 한방에 메모리를 할당해버리다니.....
여기서 중요시 되었던 문제는 바로 메모리 단편화.
그렇다. 소규모 메모리의 할당과 해제가 빈번해짐은 메모리 단편화를 초래해 큰 메모리 할당이 불가능해지거나 운영체제가 그것을 조정하는데에 CPU 시간을 소모하게 된다.
다시금 자바로 돌아와서, 정말 메모리에 대해 소홀하다는 생각이 든다. 자바의 가비지 컬렉터가 그렇게 신뢰할 만한 것이었던가? 근래의 대답은 항상 '글쎄... 아닐 것 같다' 였는데 단순한 링크드 리스트에서 이런 문제를 생각해 본다는 발상 자체가 좀 놀라웠다. 아, 발상의 원인은 복잡하다. 게임 서버에 관련된 책이었으니까;
어쨌든, 궁금한 점이 생겼다.
기본 링크드 리스트와 변형 링크드 리스트에 대해, 수만개의 객체가 생성 및 소멸되는 프로세스를 5분 정도 수행해보자. 또 객체 참조와 배열 인덱스 참조에 대해서도 얼마나 차이가 나는지 확인해보자.
여기서 중요시 되었던 문제는 바로 메모리 단편화.
그렇다. 소규모 메모리의 할당과 해제가 빈번해짐은 메모리 단편화를 초래해 큰 메모리 할당이 불가능해지거나 운영체제가 그것을 조정하는데에 CPU 시간을 소모하게 된다.
다시금 자바로 돌아와서, 정말 메모리에 대해 소홀하다는 생각이 든다. 자바의 가비지 컬렉터가 그렇게 신뢰할 만한 것이었던가? 근래의 대답은 항상 '글쎄... 아닐 것 같다' 였는데 단순한 링크드 리스트에서 이런 문제를 생각해 본다는 발상 자체가 좀 놀라웠다. 아, 발상의 원인은 복잡하다. 게임 서버에 관련된 책이었으니까;
어쨌든, 궁금한 점이 생겼다.
1. 자바의 메모리 관리는 정말 신뢰 할 수 있는가?
- 물론 사용이 끝난 객체의 참조를 null로 했을 경우
2. 위의 변형 링크드 리스트와 관련하여, 새로운 객체 생성 시 생성하는 데에 소모되는 비용은 무시할 만 한가?
- 물론 사용이 끝난 객체의 참조를 null로 했을 경우
2. 위의 변형 링크드 리스트와 관련하여, 새로운 객체 생성 시 생성하는 데에 소모되는 비용은 무시할 만 한가?
기본 링크드 리스트와 변형 링크드 리스트에 대해, 수만개의 객체가 생성 및 소멸되는 프로세스를 5분 정도 수행해보자. 또 객체 참조와 배열 인덱스 참조에 대해서도 얼마나 차이가 나는지 확인해보자.
이 글의 트랙백 주소는 http://semix2.tistory.com/trackback/133 입니다