garbage collection
GC(Garbage Collection) - summary
GC(Garbage Collection) GC란, 이미 할당된 메모리에서 더 이상 사용하지 않는 메모리를 해제하는 행동. 사용되지 않는 메모리의 대상은 Heap과 Method Area에서 사용되지 않는 Object를 의미. 소스상에서 close()는 Object 사용중지 의사표현일 뿐 Object를 메모리에서 삭제하겠다는 의미가 아님. System.GC()를 명시적으로 호출할 수 있지만, Full GC를 수행시키는 메소드이기 때문에 Stop-the-world 시간이 길고 무거운 작업이며 또한 반드시 즉시 수행한다는 보장도 없는 메소드이기에 사용을 지양. GC 작동원리 Heap을 3개의 영역으로 나누어 관리. young 영역(Young Generation): 새롭게 생성한 객체의 대부분이 위치해있음. 가득..
GC(Garbage Collection) - stop-the-world
stop-the-world stop-the-world란, GC(Garbage Collection)을 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것이다. stop-the-world가 발생하면 GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춘다. GC 작업을 완료한 이후에야 중단했던 작업을 다시 시작한다. 어떤 GC 알고리즘을 사용하더라도 stop-the-world는 발생한다. 대개의 경우 GC 튜닝이란 이 stop-the-world 시간을 줄이는 것이다.
GC(Garbage Collection) - 2 (GC Algorithm 구동방식)
GC Algorithm 구동방식 Garbage : 참조되지 않고 있는 객체 reachability : 참조되고 있는 상태 unreachability : 참조되지 않는 상태 참조 상태중 최초에 참조되는 상태를 루트 셋이라고 하는데, 루트 셋에 연결되지 않고 unreachability한 객체들을 garbage처리한다. Heap 영역에 있는 객체들은 총 4가지의 종류가 있다. Heap내의 다른 객체에 의한 참조 Java stack, 즉, 메소드 내에서 사용하는 지역변수와 파라미터에 의한 참조 네이티브 영역에서 생성된 객체에 의한 참조 메서드 영역의 정적 변수에 의한 참조 2,3,4가 루트 셋이다. Serial GC : 적은 CPU, 메모리일 때 적합. Parallel GC : 다수의 스레드를 GC로 사용.
GC(Garbage Collection) - 1 (intro)
GC(Garbage Collection) 누군가 GC에 대해서 알고 있냐고 물어봤을 때, 어떤 역할을 하는지 두루뭉술하게는 알지만 명쾌하게 설명해줄 수 없었다. Java를 주로 사용하는데 GC에 대해서 설명하지 못한다면 좋은 개발자가 아니라고 생각한다. Naver D2의 글 중에서, GC에 대해서 관심을 가지고, 이해하는 것은 훌륭한 Java 개발자의 기본이라는 내용 일부를 본 적이 있다. 그래서 더욱 더 조사하고 알아보고 싶었다. Garbage Collection은 무엇일까? GC란 이미 할당된 메모리에서 더 이상 사용하지 않는 메모리를 해제하는 행동을 의미한다. 사용되지 않는 메모리의 대상은 Heap과 Method Area에서 사용되지 않는 Object를 의미한다. 그리고 소스상에서 close()는 ..