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