'jvm'에 해당되는 글 2건

  1. 2019.04.23 Garbage Collector
  2. 2019.04.22 jvm 메모리 구조

Garbage Collector

JAVA/JAVA 2019. 4. 23. 11:26 |

Garbage Collertor 알고리즘 동작 방식 알아보자.

- Serial GC

- Parallel GC

- Parallel Old GC

- Concurrent Mark - Sweep GC

- G1 (Garbage First)GC

 

Serial GC

-XX:+UseSerialGC 

young/old 영역을  Single CPU를 사용한다.(현재 거의 사용 안함)

 

Parallel GC 

-XX:+UseParallelGC

young 영역은 멀티쓰레드로 처리되지만, Old 영역은 싱글쓰레드로 처리된다.

 

 Parallel Old GC

-XX:+UseParallelOldGC

young/old 영역 모두 멀티 쓰레드 방식으로 처리된다.

 

Concurrent Mark & Sweep GC (CMS)

-XX:+UseSerialGC

영역의 크기가 클 때 적합한 방식이다.

Suspend Time 분산하여 응답시간을 개선한다

비교적 자원이 여유있는 상태에서 GC 의 Pause Time 을 줄이는 목적으로 사용한다.

 

 

*Minor GC

eden 이 가득차면 삭제할 object들을 찾는다.(참조하지 않는 객체)

참조중 (계속 사용할 객체)면 Survior 영역으로 옮겨둠

참조가 없으면 남겨둔다(eden)

참조중인 객체가 모두 넘어가면 Eden을 싹 청소함

 

* Full GC

 old 영역: 접근 불가능 상태로 되지 않아 young 영역에서 살아남은 객체가 여기로 복사됨

대부분 Young 영역보다 크게 할당 하며,크기가 큰 만큼 young 영역보다 Gc는 적게 발생함

old 영역에 데이터가 가득차면 GC 를 수행하는데 GC 알고리즘 수행됨.

 

 

 

 

 

 

 

'JAVA > JAVA' 카테고리의 다른 글

[자료구조]List  (0) 2019.04.28
jvm 메모리 구조  (0) 2019.04.22
[객체지향] JAVA SOLID 원칙  (0) 2019.02.23
제네릭 메소드  (0) 2017.05.17
제네릭 개념 알기  (0) 2017.05.16
Posted by 양승아
:

jvm 메모리 구조

JAVA/JAVA 2019. 4. 22. 21:24 |

jvm 이란?

Jave Virture Machine 의 약자로 자바 가상머신이라 부른다.

자바와 운영체제사이에서 중계자 역할을 한다.

자바가 운영체제 종류에 영향받지 않고 돌아갈 수 있도록 한다.

메모리 관리를 자동으로 해준다(GC)

 

 

JVM은 운영체제와 플랫폼 종류에 의존적이지 않고 독립적으로 JAVA 프로그램이 실행된다.

 

<자바실행과정>

java Compiler 에 의해 .java 파일은 Byte code로 변환된다

Class Loader는 변환된 Byte Code 파일을 Jvm 내로 class를 로드하고 Link 작업을 통해 배치등 일련의 작업을 한다.

런타임시 .class를 load 한다.

Execution Engine(실행엔진) Class Loader를 통해 JVM 내부로 넘어와 Runtime Data Area에 배치된 Byte Code 들을 명령어 단위로 실행시킴

* GC 는 어플리케이션이 생성한 객체 생존 여부를 판단하여, 더이상 참조되지 않거나 null 인 객체의 메모리를 해체시켜 메모리를 반납을 함

* Runtime Data Area(JVM) 런타임 데이터 영역은 JVM 메모리로 java 어플리케이션이 실행하면서 할당받은 메모리 영역이다

 

 

Method Static Area : 클래스,변수,Method,Static변수,상수 정보들이 저장되는 영역

Heep Area : new 명령어로 생성된 인스턴스와 객체가 저장되는 구역. GC 이슈는 이영역에서 일어남

Stack Area : Method 내에서 상용되는 값들(매개변수, 지역변수, 리턴값) 메소드가 호출될때 LIFO 로 생성됨.실행이 완료되면 LIFO 삭제

PC Register : CPU의 Register와 비슷한 역할함. 현재 수행중인 JVM명령의 주조값이 저장됨

 

* Method Satic Area , heep..영역은 모든 스레드에서 공유할 수 있다.

 

Young Generation : 객체가 생성될때 마다 저장된다. 즉 막 생성된 객체들의 인큐베이터이다. 생성된 기간이 흐르고 우선순위가 낮아지면

Young 세대의 객체들은 Old 세대로 이동하게 된다. 이영역은 객체가 사라질 때는 Minor GC 수행된다.

Old Generation : young Generation 영역에 있는 객체가 오래되서 저장되는 공간이다.이영역에서 사라질때는  Full GC 수행됨

Permanent Generation : 클래스 로더에 의해 로드되는 클래스,메소드 등에서 대한 메타정보가 저장되는 영역으로 JVM 에 의해 사용됨

 

'JAVA > JAVA' 카테고리의 다른 글

[자료구조]List  (0) 2019.04.28
Garbage Collector  (0) 2019.04.23
[객체지향] JAVA SOLID 원칙  (0) 2019.02.23
제네릭 메소드  (0) 2017.05.17
제네릭 개념 알기  (0) 2017.05.16
Posted by 양승아
: