오늘은 static에 대해 공유합니다.
보시다가 부족한부분이나 잘못된부분을 알려주시면 감사히듣고 수정하겠습니다 :)
Static 의 의미
- 정적, 고정의 뜻으로 모든 객체가 공유한다는 의미입니다.
- 공유변수 or 공유메소드 라고도 불립니다.
- int a = 1 과 같이 미리 자료형을 고정하는 것도 static 의 개념입니다.
- 객체와 묶이는 데이터가 아니라 클래스와 묶이는 데이터입니다.
static 사용의 장점
- 변수 or 메소드를 공유하므로 변수 크기만큼 메모리를 아낄 수 도 있습니다.
- 미리 메모리에 올라가 있으므로 인스턴스(객체) 생성 없이 바로 사용 가능하며 속도도 빠릅니다.
static 사용의 단점
- Garbage Collector의 관리 영역 밖에 존재하므로 자주 사용하면 프로그램의 종료 시까지 메모리가 할당된 채로 존재하므로 시스템의 퍼포먼스에 악영향을 주게 됩니다.
static 사용시 유의사항
- static은 인스턴스가 생성되길 기다려주지 않고 미리 메모리에 올라가 고정시키기 때문에 static 메서드 내부에 일반 멤버변수나 메서드를 사용할 수 없습니다. (static은 static만 가능)
- 모두가 접근할 수 있는 공유자원 이기 때문에 this라는 내것이라는 개념이 존재하지 않습니다.
static이 실행되는 시점
- static은 클래스가 메모리상에 올라갈 때, 즉 우리가 프로그램을 실행하면 필요한 클래스가 메모리상에 로딩되는 과정을 거치게 된다. static은 바로 이 시점에 동작한다. 클래스가 메모리상에 올라가자마자 실행되면서 필요한 처리를 하게 된다. 따라서 static은 객체의 생성과는 관계없이 클래스가 로딩되는 시점에 단 한 번만 실행하고 싶은 처리를 하기 위해 사용한다.
어떤 경우에 static 을 사용할까?
- 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용해야 하는 것
- 객체가 데이터를 보관할 필요가 없다면 static 메소드로 만들어도 된다.
- 자주 변하지 않는 일정한 값이나 설정 정보 같은 공용자원에 대한 접근
static 의 메모리
'Java' 카테고리의 다른 글
Item25. 톱레벨 클래스는 한 파일에 하나만 담으라. (0) | 2022.05.24 |
---|---|
SOLID 좋은 객체지향 설계의 5가지 원칙 (0) | 2022.05.19 |
다형성, 오버라이딩, 오버로딩 (0) | 2022.05.19 |
SNMP GETBULK, SUBTREE 시간 성능 Test (0) | 2020.09.16 |
[JAVA] Date(), System.currentTimeMillis()를 SimpleDateFormat사용하여 원하는 형태로 날짜 출력 (0) | 2020.09.15 |
댓글