[기술 면접] Java의 메모리 영역

송진영·2023년 8월 20일
0

기술면접

목록 보기
20/24

Java의 메모리 영역

자바 프로그램을 실행하게 되면 JVM(Java Virtual Machine)은 OS로부터 메모리를 할당 받는다.
할당 받은 메모리를 자바 프로그램에 맞게 여러 개의 영역으로 나누어 사용하게 된다.

각 영역은 목적에 맞게 사용되고, 어플리케이션의 성능에 영향을 미친다.
같은 기능을 하는 어플리케이션이더라도, 메모리 관리에 따라 성능에 ㅏ이가 생긴다는 이야기다. 메로리를 관리하지 않고 구성하게 된다면 StackOverFlow가 발생하여 어플리케이션이 종료될 수도 있다는 말이다.
혹은 어플리케이션의 속도가 크게 저하될 수 있다.

JVM의 메모리는 크게 3가지로 이루어져 있다.

  1. Heap 영역
  2. Stack 영역
  3. Static(Method) 영역

Java의 변수 종류

메모리 영역에 올라가는 것들 중 이해하기 가장 쉬운 것이 변수에 대한 부분이다. 또한 처음 공부하는 경우, 변수 종류에 대해 굉장한 혼돈이 오기 마련이다. 변수 종류를 간단하게 이해하고 메모리 영역에 대해 접근하면 이해하기가 쉬울 것이다.

  • 변수는 선언 위치에 따라 구분짓게 된다.
  • 4가지 종류가 존재한다. (클래스 변수, 인스턴스 변수, 지역변수, 매게변수)
public class Variable { 

	public static int age = 20; // 클래스 변수(전역 변수)
    
    int height = 60; // 인스턴스 변수(전역 변수)
    
    public static void main(String[] args) { // 매개변수(파라미터)
 		int size = 50; // 지역변수
        
    }
}
변수 종류선언 위치설명생성 시기소멸 시기저장 메모리
클래스 변수(Static variable)클래스 영역static 키워드가 붙고 여러 객체에서 공통으로 사용할 때 사용클래스가 메모리에 올라갈 때프로그램 종료 시Static
인스턴스 변수(Instance variable)클래스 영역클래스 영역에서 static이 아닌 변수인스턴스가 생성될 때인스턴스 소멸 시Heap
지역 변수(Local variable)메서드 영역메서드 내부에서 선언된다. 초기 값을 지정해야 사용가능블록 내에서 변수의 선언문이 실행될 때블록을 벗어날 때Stack
  • 클래스 변수, 인스턴스 변수는 - 전역 변수(global variable), 멤버 변수(member variable), 필드 (field)라고 하며, 셋 다 같은 뜻이다.

  • Field(필드) = 클래스 영역에 있는 변수를 말한다.
    Ex) 필드 안에 전역 변수 = 전역 변수 안에 전역 변수)

  • 메서드 내부에 있는 변수를 지역 변수라고 한다.

profile
못하는 건 없다. 단지 그만큼 노력을 안 할 뿐이다.

0개의 댓글