BAEK_11048_이동하기
in Sidemenu / BaekJoon
in Sidemenu / BaekJoon
in Sidemenu / BaekJoon
in Sidemenu / Java
System.gc()를 호출하는 경우 시스템의 성능에 매우 큰 영향을 끼치게 된다.unreachable상태가 된다.런타임 데이터 영역
- 스레드가 차지하는 영역
- 객체를 생성 및 보관하는 하나의 큰 힙
- 클래스 정보가 차지하는 메서드 영역
힙에 있는 객체들에 대한 참조
- 힙 내의 다른 객체에 의한 참조
- Java 스택, 즉 Java 메서드 실행 시에 사용하는 지역 변수와 파라미터들에 의한 참조
- native 스택, 즉 JNI(Java Native Interface)에 의해 생성된 객체에 대한 참조
- 메서드 영역의 정적 변수에 의한 참조
Minor GC가 발생한다고 말한다.Eden 영역에 위치한다.Minor GC가 발생하면 Eden과 Survivor1 에 Alive되어있는 객체를 Survivor2로 복사한다.Survivor1에 남아있는 Alive되어있지 않은 객체들과 Eden영역을 Clear한다.Minor GC가 발생하면 이번엔 Survivor2와 Eden영역에서 Survivor1영역으로 복사하고, Survivor2와 Eden을 Clear한다.Survivor영역 간의 이동은 이동할 때마다 age값이 증가한다.Minor GC를 수행하다가, Survivor영역에서 age값이 특정 값 이상이 된 객체들은 가 Old영역으로 옮기게 된다.(Promotion)Minor GC의 경우에 적합한 알고리즘이다.Major GC가 발생한다고 말한다.reference를 쭉 따라가면서 reference가 연결되지 않는 객체를 Mark한다. Mark가 되고, 이 객체들을 삭제한다.Compact라고 해서 Mark된 객체로 생기는 부분을 Unmark된 객체로 메꾸는 방법이다.Full GC는 매우 속도가 느리며, Full GC가 일어나는 도중에는 순간적으로 Java Application이 멈춰 버리기 때문에 Full GC일어나는 정도와 소요되는 시간은 Application의 성능과 안정성에 아주 큰 영향을 준다.GC를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것stop-the-world가 발생하면 GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈추고, GC작업을 완료한 이후에야 중단했던 작업을 다시 시작한다.GC알고리즘을 사용하더라도 stop-the-world는 발생하기 때문에, GC튜닝이란 이 stop-the-world의 시간을 줄이는 것이다.Method Area라고도 한다.Major GC의 횟수에 포함된다.in Sidemenu / BaekJoon
in Sidemenu / Study
in Sidemenu / BaekJoon
in Sidemenu / Study
in Sidemenu / BaekJoon
in Sidemenu / Programmers
in Sidemenu / SWEA