개발일지

2024.03.25 TIL

과일바구니♡ 2024. 3. 25. 21:00

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

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

JVM(Java Virtual Machine)에서 메모리는 크게 스택 메모리 영역과 힙 메모리 영역으로 나뉩니다. 이 두 영역은 자바 애플리케이션을 실행할 때 데이터를 저장하는 방식과 용도가 다릅니다. 이해를 돕기 위해 각각의 특징과 차이점을 살펴보겠습니다.

스택 메모리 영역

정의 및 용도: 스택 메모리는 메소드 호출과 지역 변수 저장에 사용됩니다. 각 스레드마다 별도의 스택을 가지며, 메소드를 호출할 때마다 그 메소드만의 스택 프레임이 생성됩니다.특징:스택 메모리는 메소드 내에서 선언된 기본 타입의 변수와 객체 참조 변수를 저장합니다.메소드가 종료되면 해당 메소드의 스택 프레임은 스택에서 제거되며, 이 과정은 자동으로 이루어집니다.스택 오버플로우는 이 스택 메모리 영역이 넘치는 상황을 의미합니다. 1

힙 메모리 영역

정의 및 용도: 힙 메모리는 애플리케이션 전역에서 사용되는 데이터를 저장하기 위한 공간입니다. 주로 객체와 배열이 이 영역에 할당됩니다.

특징:힙 메모리는 애플리케이션의 런타임 중 동적으로 할당되며, 가비지 컬렉터에 의해 관리됩니다.객체가 더 이상 참조되지 않을 때, 가비지 컬렉터는 이를 감지하고 메모리를 회수합니다.힙 메모리가 가득 차면 OutOfMemoryError가 발생할 수 있습니다.

JVM에서 스택과 힙 메모리 영역은 자바 애플리케이션의 성능과 안정성에 큰 영향을 미칩니다. 따라서 이 두 메모리 영역의 특성을 잘 이해하고, 효율적으로 사용하는 것이 중요합니다. 메모리 관리에 대한 이해는 자바 애플리케이션의 성능 최적화를 위한 첫걸음이 될 수 있습니다.

 

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

클래스와 인스턴스는 객체 지향 프로그래밍에서 매우 중요한 개념입니다. 

클래스(Class)

정의: 클래스는 객체를 생성하기 위한 설계도 또는 틀입니다. 클래스는 객체의 상태를 나타내는 필드(변수)와 객체의 행동을 나타내는 메소드(함수)로 구성됩니다.특징:클래스는 객체의 설계도로서, 실제로 메모리 상에 할당되지 않습니다.클래스를 사용하여 여러 개의 인스턴스를 생성할 수 있습니다.클래스는 특정한 데이터 타입을 정의합니다. 

인스턴스(Instance)

정의: 인스턴스는 클래스에 의해 생성되어 메모리에 할당된 객체를 의미합니다. 즉, 클래스로부터 실제로 생성된 객체입니다.특징:인스턴스는 실제 메모리 상에 데이터를 가지고 있는 실체입니다.각 인스턴스는 독립적인 상태를 가질 수 있으며, 같은 클래스로부터 생성되었더라도 각각 다른 상태를 유지할 수 있습니다.인스턴스를 통해 클래스에 정의된 메소드를 실제로 사용할 수 있습니다.

간단히 말해서, 클래스는 객체를 만들기 위한 설계도이며, 인스턴스는 그 설계도를 바탕으로 만들어진 실제 객체입니다. 클래스는 하나지만, 이를 통해 생성된 인스턴스는 여러 개가 될 수 있으며, 각각 독립적인 속성과 상태를 가집니다.

 

 

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

2024.03.27 TIL  (0) 2024.03.27
2024.03.26 TIL  (1) 2024.03.26
2024.03.22 TIL  (0) 2024.03.22
2024.03.21TIL  (0) 2024.03.21
2024.03.20 TIL  (0) 2024.03.20