-
GC(Garbage Collection) 가비지 컬렉터Domain knowledge 2019. 8. 27. 01:33반응형
GC(Garbage Collection)는 프로그램이 실행되면서 메모리에 할당한 내용이 더이상 프로그램에서 사용하지 않을경우
자동으로 메모리에 할당한 영역을 제거하는 메모리 관리 방법이자 메모리를 관리하는 기능을 말합니다.
기본적으로 메모리를 할당하고 해제하는 것은 프로그래머가 직접 코드로 작성하여야 하나 프로그래머의 실수나 구조상의 문제등으로 메모리 누수가 발생할 수 있기때문에 자동으로 메모리를 관리해주는 GC가 나오게 되었습니다.
가장 대표적인것이 JVM의 GC 입니다.
GC의 역할은 3가지 입니다.
1. 메모리 할당
2. 사용중인 메모리 확인
3. 비사용중인 메모리 확인
자바(JAVA)에서 기본적으로 메모리는 5가지 영역으로 나누며
스텍영역(Stack Area) , PC 레지스터(PC Register), 기본메소드 영역(Native Method Area) , 메소드영역(Method Area), 힙(Heap) 영역 이며 GC는 힙 영역에서 작동합니다.
힙 영역은 아래 그림과 같이 구조를 가집니다.
크게 Young 과 Old 으로 나뉘어 져있으며 그림상의 Permenent 영역은 jdk8 에서 부터 사라진 영역입니다.
https://www.oracle.com/java/technologies/javase/8-whats-new.html
힙(heap)영역에서의 메모리 할당은은 아래와 같이 작동합니다.
- 최초 객체가 생성시 eden 영역에 할당합니다.
- eden 영역이 가득(또는 일정기준이상)차면 eden 영역의 비사용중인 객체를 지우고 사용중인 객체을 S0 으로 이동시킵니다.
- S0영역이 가득(또는 일정기준이상)차면 S0, eden 영역의 비사용중인 객체를 지우고 사용중인 S1으로 이동시킵니다.
- 해당기능이 반복적으로 일어나면서 S1영역에서 일정횟수 이상 유지되고 있는 겍체들은 Old 영역으로 이동됩니다.
- Old 영역이 가득(또는 일정기준이상)차면 힙영역 전체에 비사용중인 객체를 지우고 객체를 지웁니다.
Young영역(eden, S0, S1)에서 작동하는 GC를 Minor GC 라고 하며
Old 영역에서 작동하는 GC를 Major GC 라고 한다.
이와 같이 반복후에도 힙영역이 가득차서 더이상 새로 발생하는 객체를 할당할 수 없게 되면 OOM(Out Of Memory)이 발생하게 됩니다.
GC의 작동방식은 Serial Collector, Parallel Collector, Parallel Compacting Collector, Concurrent Mark-Sweep Collector (CMS), Garbage First Collector(G1) 가 있습니다.
[참고링크]
쓰레기 수집 (컴퓨터 과학) - 위키백과, 우리 모두의 백과사전
쓰레기 수집(garbage collection 가비지 컬렉션[*], GC)은 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다. 영어를 그대로 읽
ko.wikipedia.org
https://source.android.com/devices/tech/dalvik/gc-debug
Debugging ART Garbage Collection | Android Open Source Project
https://stackoverflow.com/questions/4818869/technical-details-of-android-garbage-collector
Technical details of Android Garbage Collector
As I'm doing a research on commonalities/differences of various mobile platforms, one of the aspects under investigation is memory management. As such, I'm interested in more detailed technical
stackoverflow.com
가비지 컬렉션, 컬렉터(Garbage Collection)란?
Garbage Collection, 줄여서 약어로 GC라고도 부른다. 영어로 그대로 읽어서 가비지 컬렉션이라고 부른다. 메모리 관리 방법 중에 하나로, 시스템에서 더이상 사용하지 않는 동적 할당된 메로리 블럭
blog.metafor.kr
https://velog.io/@litien/%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%ED%84%B0GC
가비지 컬렉터(GC)에 대하여
얼마 전 N사 전화면접에서 GC에 대한 질문을 받고 그대로 얼어버린 경험이 있다. GC에대해 들어본 적은 있으나 동작원리나 관련 내용들을 제대로 몰라 할 수 있는 말이 없었다. 그래서 이번 포스
velog.io
[성능튜닝] 가비지 컬렉터(GC) 이해하기
유닉스 서버든 윈도우 기반 서버든 풀(Full) GC를 수행하는 시점에는 해당 WAS의 컨테이너에서 서비스가 처리되지 않는다는 단점이 있습니다. 다시 이야기하면 GC를 많이하면할수록 응답 시간에 많
12bme.tistory.com
https://2ssue.github.io/base/190509_PJI/
JVM 메모리 구조와 Garbage Collector
JVM이란?
2ssue.github.io
https://brucehenry.github.io/blog/public/2018/02/07/JVM-Memory-Structure/
JVM Memory Structure
Introduction to Java Virtual Machine Memory Structure
brucehenry.github.io
https://steady-coding.tistory.com/305
JVM 메모리 구조란? (JAVA)
안녕하세요? 코딩 중독입니다. 오늘은 JVM 메모리 구조에 대해 알아보겠습니다. JVM이란? JVM 메모리 구조를 설명하기 전에 JVM이 무엇인지 알아야 합니다. JVM은 Java Virtual Machine의 약자로, 자바 가상
steady-coding.tistory.com
자바 메모리 구조 (Java Memory Structure) - ThinkGround
자바 메모리 구조 (Java Memory Structure) 관련 포스트입니다. 거의 지금까지는 기능 개발에만 집중하다가 성능상 이슈가 있어 GC나 Tomcat 튜닝 등을 진행하려다 보니 메모리 공부를 하게 되어 이참에
thinkground.studio
https://deveric.tistory.com/64
[Java] Java의 GC(Garbage Collection)방법과 종류
GC란? Java Application은 JVM(Java Viirtual Machine) 위에서 구동됩니다. JVM에서는 Java Application이 사용하는 메모리를 관리하고 있는데 이 JVM의 기능중 더 이상 사용하지 않는 객체를 청소하여 공간을 확..
deveric.tistory.com
https://goodgid.github.io/Java-8-JVM-Metaspace/
Java 8에서 JVM의 변화 : PermGen이 사라지고 Metaspace가 등장하다.
Index
goodgid.github.io
일반적인 GC 내용과 G1GC (Garbage-First Garbage Collector) 내용 - ThinkGround
안녕하세요. 일반적인 GC 내용과 G1GC(Garbage-First Garbage Collector) 내용 포스트입니다. JDK 8 (Hotspot) 버전에 초점을 맞춰으로 소개드리니 참고바라며, 부족한 내용에 대해서는 다른 버전도 참고하였습
thinkground.studio
반응형'Domain knowledge' 카테고리의 다른 글
핸드셰이킹 (handshake) (0) 2020.11.10 FLOPS (Floating point operations per second) (0) 2020.10.05 클린 아키텍처(Clean Architecture) (0) 2020.01.18 JAVA String 객체 와 String 리터럴(literal) (0) 2019.10.16 러너블(Runnable)이란? (0) 2019.10.05 함수(Funtion)와 메소드(Method)의 차이 (0) 2019.09.21 BIG-O Notation (빅오표기법) (0) 2019.09.18 객체지향 디자인 5원칙 (SOLID) (0) 2019.09.18