SeouliteLab

[Java] static(정적) 변수와 메모리 관리 본문

프로그래밍

[Java] static(정적) 변수와 메모리 관리

Seoulite Lab 2024. 2. 27. 17:07

Java에서 static(정적) 변수는 클래스에 속하는 변수로서, 모든 인스턴스가 공유하는 공통된 값이며 프로그램 실행 중에 한 번만 메모리에 할당된다. 이러한 특성은 다음과 같은 메모리 관리 측면에서 중요한 역할을 한다.

  1. 메모리 할당:
    • static 변수는 프로그램이 시작될 때 클래스가 로딩되면서 메모리에 할당된다. 클래스 내부에 선언되어 있으므로 클래스의 인스턴스화와는 무관하게 사용할 수 있다.
  2. 공유된 값:
    • static 변수는 모든 인스턴스가 공유하는 값으로서, 한 번의 수정으로 모든 인스턴스에 영향을 미친다. 이를 통해 데이터의 일관성을 유지할 수 있다.
  3. 메모리 누수 방지:
    • static 변수는 프로그램이 종료될 때까지 메모리에 남아있기 때문에, 필요 이상으로 메모리를 소비할 수 있다. 이를 방지하기 위해 static 변수에는 약한 참조(Weak Reference)를 사용하여 메모리 누수를 최소화해야 한다.

 

아래는 static 변수의 예제 코드이다.

public class Counter {
    private static int count = 0;

    public static void increment() {
        count++;
    }

    public static int getCount() {
        return count;
    }
}

위의 코드에서 count 변수는 static으로 선언되어 있으며, 모든 Counter 클래스의 인스턴스가 이 변수를 공유한다.

static 변수는 적절하게 활용함으로써 메모리 관리와 데이터 공유에 효율적으로 사용될 수 있다.