본문 바로가기


Java

[Java] JVM과 GC(Garbage Collection) : 자바가상머신과 쓰레기수집

JVM(Java Virtual Machine) : 자바 가상 머신


자바로 작성한 코드가 실행 되는 과정은 다음 과 같다.


자바코드 -> JDK컴파일 -> JVM -> 프로그램 실행


JVM은 OS버전 마다 다르게 OS위에 설치 된다. 

따라서 JAVA라는 언어는 OS에 가기전에 JVM을 거치게 되기 때문에 어떤 OS에서도 제대로 작동한다.

이를 운영체제에 독립적 이라고 한다. 반대되는 말은 운영체제에 의존적이라고 한다.


정리하자면

JAVA는 운영체제에 독립적인 언어이다. 이를 가능하게 하는 것이 JVM이다.


JVM 이란?

물리적인 기계와 소통할 수 있도록 자바 프로세스를 실행시키는 가상머신


JVM의 기능

JAVA와 OS사이의 중계자 역할

메모리 관리 기능(GC)


GC(Garbage Collection) : 쓰레기 수집

JVM의 Heap 메모리 영역(동적 할당 영역)에서 일어나는 메모리 관리 기법


GC의 기능

JVM의 메모리 관리 기법으로 프로그램이 동적할당 했던 메모리 영역 중에서 필요없게 된 영역을 자동으로 해제하는 기능


필요없게 된 영역이란?

어떤 변수도 가리키지 않게 된 영역


C 나 C++같은 언어들에서는 메모리 관리를 free, delete같은 함수들을 사용해 메모리를 해제해 주어야 하지만 자바는 JVM내에서 메모리를 관리 해준다.


JAVA의 GC기법

1. Mark & Compact(mark&sweep와 유사)

사용 되지 않는 객체를 모두 mark한 뒤 마크된 객체들을 모두 삭제하는 기법


2.세대단위쓰레기 수집

오랫 동안 사용된 객체일 수록 앞으로 사용되지 않을 확률이 적고 반대로, 최근에 생긴 객체일 수록 사용되지 않을 확률이 높다는 연구 결과를 활용해 최근에 생성된 객체들 중 일정 기간 사용된 객체들을 오래된 세대의 메모리영역으로 옮기고 그렇지 않은 객체들을 메모리 해제



이 외에도 많은 쓰레기수집 기법들이 존재하지만 이는 

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)


이 위키피디아를 참조해 주시길 바랍니다.




'Java' 카테고리의 다른 글

[Java] .war .jar  (0) 2018.03.13
[Spring] IntelliJ로SpringBoot 프로젝트 시작하기  (0) 2018.02.02
[Java] final keyword(final 키워드)  (0) 2017.01.10
[Java] 멤버변수:클래스 변수, 인스턴스 변수  (0) 2016.08.03
[Java] Java 와 JVM  (0) 2015.01.05