Static사용의 장점과 단점

구동희·2022년 2월 15일
4
post-custom-banner

Static

  • Static : 자바 언어 예약어로 클래스 메서드와 클래스 필드를 지정할 때 사용한다.
  • 인스턴스를 생성하지 않아도 클래스의 메서드와 필드에 접근을 가능하게 한다.

Static 함수, 변수의 메모리 저장 위치

일반적으로 우리가 만든 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체(인스턴스)는 Heap영역에 생성된다.


Static의 장점

Static은 두가지 장점을 가진다.
첫번째는, Static이 메모리 측면에서 효율적일 수 있다는 점이다.
Static 메모리 영역에 저장되어 고정된 메모리 영역을 사용하기 때문에 매번 인스턴스를 생성하며 낭비되는 메모리를 줄일 수 있다.


두번째는, 객체를 생성하지 않고 사용가능 하기 때문에 속도가 빠르다는 것이다. 클래스가 메모리에 올라가는 시점에 생성되어 바로 사용이 가능하기에 속도면에서 이점을 가진다.

Static의 단점

static 키워드는 크게 세가지 단점을 가진다.
첫번째는, 프로그램 종료시까지 메모리에 할당된 채로 존재한다는 것이다.
우리가 만든 Class는 프로그램 실행시 Static 영역에 생성된다.
그런데, Garbage Collector를 통해 수시로 관리를 받는 Heap 영역과 다르게 Static 영역은 Garbage Collector의 관리를 받지 않는다. 그래서 Static 영역은 프로그램 종료시까지 메모리에 존재 한다.
만약 프로그램에서 많은 Static을 사용하게 되면 종료시까지 메모리가 할당된 채로 존재하므로 프로그램 퍼포먼스에 악영향을 주게 된다.


두번째는, Static이 객체지향적이지 못하다는 점이다.
Static은 따로 객체를 생성하지 않고 메모리의 Static영역에 할당된 곳에서 여러 클래스들이 데이터를 불러온다.
이러한 Static의 특징은 객체의 데이터들이 캡슐화되어야 한다는 객체지향 프로그래밍의 원칙을 위반한다.


세번째는 Static 메서드는 Interface를 구현하는데 사용될 수 없다는 점이다. Static 메서드는 코드의 재사용성을 높여주는 자바의 유용한 객체지향적 기능(Interface 등)을 사용하는 것을 방해한다.

그렇다면 Static을 사용하면 안될까❓❓

Static은 큰 단점을 가지지만 장점 또한 가지고 있다. 그렇기 때문에,
프로그램을 만들때, 무작정 Static을 사용하지 않기보다는 위에 제시된 단점들을 고려하여 적절하게 Static 키워드를 사용해야 한다면 가독성 높고 효율적인 코딩을 할 수 있을 것이다.

profile
천천히 배워가는 개발꿈나무
post-custom-banner

2개의 댓글

좋은 내용 정리 감사드립니다!

답글 달기
comment-user-thumbnail
2022년 10월 3일

헉ㅋㅋ

답글 달기