프로그래밍/JAVA

[Java] Static

daykim 2023. 6. 30. 15:58

Static

static 키워드는 메모리에 한 번 할당 되고, 프로그램이 종료될 때 해제되는 것을 의미한다.

  • 프로세스 메모리 배치
  • 위의 배치에서 Data 영역에 전역 변수와 정적(static) 변수가 저장된다.
  • 따라서 GC의 관리 영역 밖에 존재하므로 남발하면 퍼포먼스에 악영향을 끼칠 수 있다.
  • 객체가 생성되기 이전에 이미 할당되어 있으므로, 객체 생성 없이 바로 사용할 수 있다.
  • 일반적으로 만든 Class는 Static 영역에 생성되고, new 연산자를 통해 생성한 객체는 Heap 영역에 생성된다.

 

장점

  • static 변수의 경우 여러 객체자 하나의 메모리를 참조하도록 할 때 사용하면, 메모리 효율이 높아진다.

 

단점

  • static 메소드의 경우 객체 생성 없이 호출이 가능하지만 지양하는 방식이다.
  • static 메소드를 사용하기 위해선, static 메소드에서 사용하는 변수가 모두 static 변수여야 한다.
  • 그러면 많은 변수가 static으로 할당되게 되는데, 메모리 누수 등 문제의 원인이 된다.

 

전역 변수와 정적 변수 차이

  • 전역 : 다른 파일에서도 해당 변수에 접근 가능하다.
  • 정적 : 다른 파일에서는 접근할 수 없고, 해당 파일 내에서만 scope에 맞게 접근 가능하다.

 

 

'프로그래밍 > JAVA' 카테고리의 다른 글

[Java] 인터페이스  (0) 2023.09.13
[Java] 상속  (0) 2023.09.12
[JAVA] 클래스  (0) 2023.01.14
[JAVA] 참조 타입  (2) 2022.11.08
[JAVA] 조건문과 반복문  (0) 2022.10.12