2018. 3. 27. 09:15 개발
Garbage Collector
Garbage Collector
http://d2.naver.com/helloworld/1329
http://wanzargen.tistory.com/15
Java - SE - 기본, 요즘은 SE로 가고 있다.
- EE - 기업, 서블릿 lib 포함, -> Sun에서 지원 중단, 아파치 쪽에서 가져갈 듯.
JDK - JVM + lib + 컴파일러(개발환경) -> 개발자들이 주로 사용.
- 서버사이드에는 JDK를 깔지 않는다.(exe파일로 인한 해커들의 공격떄문에) 왜?
JRE - JVM + lib -> 실행환경
xx.java -> (use javac) -> class -> java -> jvm -> 윈도우, 리눅스
JVM 구조
- 클래스, 메소드, static 영역 -> 메타데이터
- 스택 -> 실행되는 메소드
- 힙 -> 인스턴스
OOM -> out of memory -> XML 옵션의 줘서 설정가능.
GC - 대체적으로 잘 작동하지는 않아.
영역1 - Eden, Survivor 1, 2
영역2 - OLD
영역3 - PEM
처음에 무조건 Eden으로 올린다. -> 사이즈가 풀이 나면 에덴의 것을 Survivor 1 으로 옮기고 에덴을 비워줌.
Survivor 1이 차면 2로 옮기고 비워줌. -> 똑같이, 차면 OLD.
OLD가 차면 Major GC 가 작동(분단위, 시스템 프로세스가 정지되는 문제.), 앞쪽에서는 마이너 GC가 작동.
OLD를 너무 크게작으면 멈추고 넘기는 시간이 오래걸리는 JVM의 문제.
'개발' 카테고리의 다른 글
Spring 흐름 (0) | 2018.05.21 |
---|---|
부모 추상 인터페이스 (0) | 2018.04.03 |
TDD와 BDD 차이점 (0) | 2018.03.24 |
NoSQL (0) | 2018.03.24 |
Spring 1 (0) | 2018.02.03 |