http://qwe1qwe.tistory.com/1476

http://jikime.tistory.com/313

요약설명
가비지 콜렉터는, 더이상 참조하지 않는 오브젝트가 점유하고 있는 메모리를 회수하여, 할당가능한 상태로 만드는 것.
동작방식을 이해하려면 먼저 JVM의 3가지 메모리 영역를 알아야 한다.
1)new/young영역 : 생성된지 얼마 안된 객체가 저장된다.
a) eden : 새롭게 생성된 모든 객체가 저장된다.
b) survivor space 1, survivor space 2 : old 영역으로 넘어가기 전 객체들이 저장.
2)old영역 : 생성된지 오래된 객체가 저장된다.
3)permanent 영역 : jvm클래스와 메서드 객체가 저장된다.

이중에서 new/young영역과 old영역에서 서로 다른 GC(Gavage Collector)가 동작한다.
new/young영역에서는 minor GC가 동작하는 데, 한번 동작할때마다 다른 survivor 영역으로 객체를 이동시킨다. 즉 첫번째 동작에서는 eden영역과 survivor1에서 살아있는 객체들을 survivor2영역으로 이동시키고, 두번째 동작에서는 eden영역과 survivor2영역에서 살아있는 객체들을 survivor1으로 이동시킨다. 그리고 각 동작마다 죽어있는, 사용되지 않는 객체들은 clear시킨다.
new/young영역에서는 이런식으로 동작을 하다가, 생성된지 오래된 객체들은 old영역으로 이동하게 된다. old영역에서는 full GC가 객체들을 관리하는데, 객체들의 reference를 따라가면서 연결이 끊긴 객체들을 마크하고 이것들을 삭제한다. 이 작업은 상당히 오래 걸리기 때문에, full gc가 동작하는 동안 사용자들의 요청이 쌓이게 되면 장애발생의 원인이 될수 있다..
작업노트/JAVA l 2010. 7. 27. 09:39

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

카테고리

분류 전체보기 (117)
작업노트 (98)
거미줄세상 (12)
쌓기 (1)
책읽기 (0)
Reviews (4)

달력

«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
get rsstistory! Tistory Tistory 가입하기!