++/CS

[TIL] CS공부 3일차

writtenbyrla 2024. 3. 7. 10:05

JVM의 스택과 힙 메모리 영역에 대해 아는 만큼 설명해 주실 수 있을까요?

자바 프로그램이 실행되면 JVM은 OS로부터 메모리를 할당받아 용도에 따라 여러 영역으로 나누어 관리합니다.

스택 메모리 영역은 정적으로 할당된 메모리 영역으로 기본 자료형 데이터 값이 저장되는 공간이며 각 스레드마다 별도로 할당됩니다.
후입선출(LIFO)의 형태로 동작하며, 메서드가 호출되면 필요한 메모리 공간을 할당받고 메서드가 종료되면 사용하던 메모리를 반환합니다.

은 동적으로 할당하여 사용하는 영역으로 모든 스레드에서 공유됩니다. new 연산자에 의해 생성되는 참조형 데이터 타입의 객체나 배열이 생성되는 공간으로 객체를 참조하는 레퍼런스 변수는 stack 영역에 저장됩니다. Heap 영역과는 달리 호출이 끝나더라도 삭제되지 않고 유지되지만, 사용되지 않는 객체는 가비지 컬렉터에 의해 정리되어 메모리가 회수 됩니다.

 

++ 스레드란? 

프로그램 실행 흐름을 나타내는 개념으로, 프로세스 내에서 실행되는 개별적인 작업 단위를 말합니다.

 

 

 

 

 


 

 

 

 

클래스와 인스턴스의 차이에 대해 설명해 주실 수 있을까요?

클래스객체 생성을 위한 설계도라고 볼 수 있습니다. 클래스에는 객체의 모든 속성기능이 정의되어 있습니다. 여기서 속성은 멤버변수, 기능은 메서드로 말할 수 있습니다.

인스턴스는 어떤 클래스로부터 만들어진 객체입니다. 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하는데, 이 과정에서 클래스에 정의된 속성과 기능에 맞는 객체가 생성됩니다.

예를 들어, TV 클래스에서 색깔, 전원상태, 채널 등의 속성을 정의하고 끄고 켜기, 채널 변경 등의 기능을 정의한다면 클래스에 정의된 속성과 기능에 따라 여러 TV 인스턴스를 별개로 생성할 수 있습니다. 

 

 

 

 


 

 

 

 

Garbage Collector의 역할, 원리, 알고리즘에 대해 아는 만큼 설명해주실 수 있을까요?

역할
Garbage Collector는 JVM의 heap 메모리 영역에서 더 이상 사용되지 않는 메모리를 자동으로 관리하는 역할을 합니다. 오랜 기간 참조되지 않은 가비지 객체를 회수함으로써 메모리 누수를 방지합니다.

원리 / 동작 순서
Garbage Collector는 Mark And Sweep(Optionally Compact)의 순서에 따라 동작합니다.

Mark : Stack의 모든 변수가 어떤 객체를 참조하고 있는지 찾아서 마킹합니다. 어떤 객체에 유효한 참조가 존재하면 Reachable, 그렇지 않다면 Unreachable이라 합니다.
Sweep: 마킹되지 않은 unreachable 객체는 유효한 참조가 없는 경우이므로 Heap 영역에서 제거합니다.
Compact: compact를 하는 GC라면 단편화된 메모리를 정리합니다.


알고리즘
Garbage Collector는 여러 알고리즘을 사용하여 객체를 정리합니다.

Serial Garbage Collector
단일 스레드에서 작동하며 작업 중에는 모든 애플리케이션을 중단합니다. 따라서 작은 규모의 애플리케이션 환경에서 적합하며 멀티 스레드 환경에서는 적합하지 않습니다.

Parallel Garbage Collector
여러 스레드를 이용하여 heap을 관리하며 GC를 위한 스레드 수, 일시 정지 기간, 처리량, heap size 등을 정할 수 있습니다. Serial Garbage Collector와 마찬가지로 작업하는 동안에는 다른 애플리케이션의 스레드를 일시정지 합니다.Java 8의 디폴트 GC 입니다.

CMS Garbage Collector
여러 스레드를 이용하고 애플리케이션의 프로세서 자원을 활용하여 일시 정지 기간을 줄여 애플리케이션이 느려진다는 단점이 있습니다. 따라서 대규모의 다중 스레드 애플리케이션에서 일시 정지 기간이 짧아야 하는 경우에 적합합니다.

G1 Garbage Collectorheap
같은 크기로 영역을 여러 개 분할하여 영역마다 GC를 개별적으로 수행합니다. 멀티 프로세서 환경에서 큰 메모리 공간을 사용할 수 있는 애플리케이션을 위해 만들어졌으며 Java 9 ~ 12의 디폴트 GC입니다.

 

++ Garbage Collector와 Garbage Collection 차이에 대해 설명해주세요

Garbage Collection: 메모리 관리 기법 중 하나로, 사용하지 않는 메모리를 자동으로 탐지하고 회수하는 프로세스입니다.
Garbage Collector: 가비지 컬렉션을 실제로 수행하는 시스템 또는 프로그램의 구성 요소입니다.
 

 

 

 

참고자료

https://sihyung92.oopy.io/java/garbage-collect/1

https://www.youtube.com/watch?v=vZRmCbl871I&t=188s

https://www.youtube.com/watch?v=Fe3TVCEJhzo&t=303s

'++ > CS' 카테고리의 다른 글

[TIL] CS공부 5일차  (0) 2024.03.09
[TIL] CS공부 4일차  (0) 2024.03.08
[TIL] CS공부 2일차  (0) 2024.03.06
[TIL] CS공부 1일차  (0) 2024.03.05
주니어 자바 개발자를 위한 100가지 질문(1) - 기초  (0) 2023.12.20