본문 바로가기

자바

[자바] static 메모리

Static 메모리

static 키워드를 사용하면 데이터가 고정 메모리에 올라가기 때문에 효율적이고, static영역에 저장된 메모리는 모든 객체가 공유한다는 장점이 있지만, Garbage Collector가 관리하지 않아 무분별하게 사용하면 할당되지 않은 메모리의 낭비가 심해진다.

  • static 변수는 클래스 변수다
  • static 키워드가 붙은 메소드는 객체를 생성하지 않고도 메소드에 접근이 가능하다.
  • static 메소드 내부에서 Instance 메소드를 호출할 수 없다. - > 인스턴스 메소드는 반드시 객체 생성 후 호출 가능.
class StaticStudyClass{

    void instanceMethod() {} //인스턴스 메서드 생성
    static void staticMethod() {} //static 메서드 생성
    
    //인스턴스 메서드
    void instanceMethodCall(){
    	instanceMethod(); //호출 O
        staticMethod(); //호출 O
    }
    
    //Static 메서드
    static void staticMethodCall() {
    	instanceMethod(); //호출 X (에러 발생 => static메서드는 객체를 생성하지 않기때문에 인스턴스 메서드를 사용할 수 없다.)        
        staticMethod(); //호출 O
    }
    
}