개발일지

2024.04.02 TIL

과일바구니♡ 2024. 4. 2. 21:00

1. 스프링)기술면접질문

1)가비지 컬렉터에 대해 설명해주세요

가비지 컬렉터는 프로그램이 동적으로 할당한 메모리 영역 중에서 더 이상 사용하지 않는 영역을 자동으로 찾아서 해제하는 시스템의 일부입니다. 이 과정을 통해 사용 가능한 메모리 공간을 늘리고, 메모리 누수를 방지하여 프로그램의 효율성을 높입니다.

 

가비지 컬렉션(Garbage Collection)의 기본 원리

메모리 할당: 프로그램 실행 중 필요에 따라 메모리를 동적으로 할당받습니다.

사용 중인 메모리 인식: 가비지 컬렉터는 현재 사용 중인 메모리를 추적합니다.

사용하지 않는 메모리 인식: 더 이상 참조되지 않는 메모리 영역을 식별합니다.

메모리 해제: 식별된 불필요한 메모리 영역을 해제하여 재사용 가능하게 만듭니다.

 

가비지 컬렉션의 필요성

메모리 누수 방지: 프로그램이 메모리를 계속해서 할당만 하고 해제하지 않으면, 결국 사용 가능한 메모리가 고갈되어 시스템 성능이 저하됩니다.

자동 메모리 관리: 개발자가 메모리 관리에 신경 쓰지 않아도 되므로, 개발에 더 집중할 수 있습니다.

 

가비지 컬렉션의 과정

Mark: 현재 사용 중인 객체를 마킹합니다.

Sweep: 마킹되지 않은 객체를 메모리에서 제거합니다.

Compact: 메모리 단편화를 줄이기 위해 사용 중인 객체를 메모리의 한쪽으로 몰아넣어 공간을 최적화합니다.

가비지 컬렉터는 프로그램의 안정성과 효율성을 높이는 중요한 역할을 합니다. 메모리 관리를 자동으로 해주기 때문에 개발자는 더 복잡한 문제에 집중할 수 있게 됩니다. 가비지 컬렉션 기술은 프로그래밍 언어와 시스템에 따라 다양한 방식으로 구현될 수 있습니다.

 

2)스택, 힙 메모리란 무엇이며 어떤 차이가 있는지 비교해서 설명해주세요.

프로그래밍에서 스택 메모리와 힙 메모리는 데이터를 저장하는 두 가지 주요 영역입니다. 이 두 영역은 용도, 관리 방법, 그리고 데이터의 생명주기 측면에서 서로 다릅니다.

스택 메모리(Stack Memory)

정의: 스택 메모리는 함수 호출과 관련된 지역 변수와 함수의 매개변수를 저장하는 메모리 영역입니다.

특징:LIFO(Last In, First Out): 가장 마지막에 들어온 데이터가 가장 먼저 나가는 구조입니다.

속도: 스택 메모리는 힙 메모리에 비해 접근 속도가 빠릅니다.

자동 관리: 함수 호출이 끝나면 스택에 저장된 지역 변수는 자동으로 소멸됩니다.

용량 제한: 스택 메모리의 크기는 제한적이며, 너무 많은 메모리를 사용하면 스택 오버플로우가 발생할 수 있습니다.

힙 메모리(Heap Memory)

정의: 힙 메모리는 동적으로 할당되는 메모리가 저장되는 영역으로, 주로 프로그램이 실행되는 동안 동적으로 생성되는 객체를 저장합니다.

특징:동적 할당: 프로그램 실행 중에 필요한 만큼 메모리를 할당하고 해제할 수 있습니다.

속도: 스택 메모리에 비해 접근 속도가 느립니다.

수동 관리: C언어에서는 malloc과 free 같은 함수를 사용하여 힙 메모리를 직접 관리해야 합니다. 자바와 같은 언어에서는 가비지 컬렉터가 메모리를 자동으로 관리해 줍니다.

용량 제한: 힙 메모리는 시스템의 가용 메모리에 의해 제한됩니다.

 

스택 메모리와 힙 메모리는 각각의 장단점이 있으며, 프로그램의 요구 사항에 따라 적절히 사용해야 합니다.

스택은 속도가 빠르고 관리가 간단하지만, 크기가 제한적이라는 단점이 있습니다. 반면, 힙은 크기가 유연하지만, 관리가 복잡하고 속도가 느리다는 단점이 있죠. 프로그래밍을 할 때 이러한 특성을 잘 이해하고 사용하는 것이 중요합니다!

 

 

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

2024.04.04 TIL  (0) 2024.04.04
2024.04.03TIL  (0) 2024.04.03
2024.04.01 TIL  (0) 2024.04.01
2024.03.29 TIL  (0) 2024.03.29
2024.03.28TIL  (0) 2024.03.28