JAVA-기초이론1_JVM_GC

yeongnie·2021년 12월 2일
0
post-thumbnail

1. Java Virtual Machine

프로그램 실행 까지 다음과 같은 순서로 전개된다.
(1) "소스코드.java" 작성
(2) 소스코드 파일을 컴파일러(javac.exe)로 컴파일
(3) "소스코드.class" 인 바이트 코드 파일 생성
(4) JVM 구동명령어(java.exe)에 의해 JVM에서 해석
(5) 해당 운영체제에 맞게 기계어 번역

JVM (Java Virtual Machine)
자바 프로그램을 해석하는 일종의 소프트웨어/가상머신
운영체제에 상관없이 자바 프로그램을 해석하여 실행시킬수 있기 때문에 유연하다고 말한다.

.

2. GC (Garbage Collector)

자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되어, 메모리는 자바가 직접 관리한다.
객체 생성시 자동적으로 메모리 영역을 찾아서 할당하고, 사용하지 않는 객체는 자동으로 메모리에서 쓰레기 수집기 GC가 수거하는 기능이 있다.

heap영역에서 인스턴스 소멸기능을 말한다

2-1 용어
(1) reference counting algorithm
reference count = 0이면 GC가 우선적으로 처리한다.
예를들어 프로그램 막바지에 어떤 변수 a가 쓸모가 없어졌을 때 그냥 두지 않고 a=null; 선언한다면?
GC는 a를 우선적으로 처리할 것이다.

(2) weak generational Hypothesis

(3) stop-the-world
GC를 실행하기 위해 JVM이 어플리케이션의 실행을 멈추는 것. GC튜닝이란 이러한 Stop-the-world의 시간을 줄이는 것을 말한다.

(4) generation
-young : 생성된지 얼마 안된 객체들이 저장되는 장소로 minor GC가 실행된다.
-old : young보다 넓은 공간. young에서 살아남은 객체가 오는 종착지. Full GC가 실행된다.
-perm : code가 모두 실행된 후에서도 old에서 살아남은 객체가 perm에 있다면 Major GC가 실행된다.

(5) major GC
간헐적으로 메모리에서 회수하는 특징을 갖는다.

(6) Major GC
JVM의 동작 자체를 멈추게 한다.

.
.
.

 Comment.
 단순히 로직만 만들어서 되는게 아니었다.. GC튜닝이라는 세계..
 결국 개발 초기부터 성능을 고려해서 로직을 설계해야,
 빠른 속도, 안전한 코딩이 나오는 것 같다. 
 이것은 프로그램이 어떠한 알고리즘으로 진행되는지를 기본적으로 알아야 가능하다.
profile
curiosity-paradise

0개의 댓글