IT 삽질기

GC(Garbage Collection)란? 본문

개발

GC(Garbage Collection)란?

화이팅빌런 2021. 8. 31. 23:55

이번 글에서는 GC(Garbage Collection)에 대해서 알아보도록 하자.

GC란?

GC란 메모리 관리 기법중 하나로 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능으로 어떤 변수도 가리키지 않게 된 영역을 의미한다. 예를 들어 살펴보도록 하자.

public class Person {
	private String name;
    
	public Person(String name){
            this.name = name;
    }
}

Person a = new Person("Anna");
a = null;
a = new Person("Elsa");

위와 같은 코드가 있을 때 최초에 생성했던 Anna는 프로그램이 실행되며 결국 아무도 참조하지 않는 영역이 되는데 이를 가비지라고 하며 이렇게 남아있는 가비지가 메모리를 차지하며 메모리 누수의 원인이 된다. 이를 방지하기 위해 GC가 존재하며 주기적으로 메모리를 검사하며 청소하게 된다.

일부 언어(C++)에서는 이런 가비지들을 직접 해제해주는 코드를 작성해야 하지만 Java와 같이 GC가 존재하는 언어는 자동으로 GC과정이 진행된다.

Stop the world

GC가 일어나면 어떻게 될까?

일반적으로 GC를 실행하기 위해서는 JVM 애플리케이션이 멈추게 되는데, GC과정이 완료된 이후 중단했던 작업이 다시 시작되게 되기 때문에 GC가 많이 일어나거나 GC과정에서 걸리는 시간이 길면 애플리케이션의 성능 저하로 연결된다. 따라서, 규모가 큰 규모의 애플리케이션에서는 Stop the world 시간을 줄이는 GC 튜닝이 중요시 된다.

 

이번 글에서는 GC란 무엇이고, GC에 대해서 꼭 알아야할 Stop the world에 대해서 간단하게 알아보았다. 다음 글에서는 GC과정이 구체적으로 어떻게 진행되는지에 대해서 알아보도록 하자.

 

참고자료

https://ko.wikipedia.org/wiki/%EC%93%B0%EB%A0%88%EA%B8%B0_%EC%88%98%EC%A7%91_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99) 

https://mangkyu.tistory.com/118

https://velog.io/@litien/%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%ED%84%B0GC

https://d2.naver.com/helloworld/1329

'개발' 카테고리의 다른 글

Slack App 만들어 메세지 보내기  (0) 2021.09.11
정규표현식(Regex)이란?  (0) 2021.08.10
OLTP과 OLAP  (0) 2021.08.08
LDAP(Lightweight Directory Access Protocol)이란?  (0) 2021.08.01
CentOS 7 serviced 등록 및 실행  (0) 2021.05.17
Comments