티스토리 뷰
반응형
Java 에서 Static 키워드를 사용한다는 것은 메모리에 한 번 할당되어
프로그램이 종료될 때 해제되는 것을 의미한다.
이를 정확히 이해하기 위해서는 메모리 영역에 대한 이해가 필요한데,
일반적으로 우리가 만든 Class 는 Static 영역에 생성되고,
new 연산을 통해 생성한 객체는 Heap 영역에 생성된다.
객체의 생성시에 할당된 Heap 영역의 메모리는 Garbage Collector 를 통해 수시로 관리를 받는다.
하지만 Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만,
Garbage Collector 의 관리 영역 밖에 존재하므로 Static 을 자주 사용하면 프로그램의 종료시까지 메모리가 할당된 채로 존재하므로
자주 사용하게 되면 시스템의 퍼포먼스에 악영향을 주게 된다.
Static 의 특징
Static 변수와 static 메소드는 Static 메모리 영역에 존재하므로 객체가 생성되기 이전에 이미 할당이 되어 있다.
그렇기 때문에 객체의 생성없이 바로 사용할 수 있다.
- Static 변수
public class Counter { static int count; public Counter() { this.count ++; System.out.println("좋아요 갯수 : " + this.count); } public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); } }
- Static 메소드
public static int getCount() { return count; }; public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); System.out.println("총 count " + Counter.getCount()); }
(참고 : mangkyu.tistory.com/47, velog.io/@lshjh4848/static%EB%B3%80%EC%88%98%EC%99%80-static-%EB%A9%94%EC%84%9C%EB%93%9C-final-xpk2l8e7g0)
반응형
'Java' 카테고리의 다른 글
[Java] 객체 정렬 방법 (Collections.sort()) (0) | 2021.02.10 |
---|---|
[Java] ConcurrentHashMap, HashMap, Hashtable (0) | 2021.02.10 |
[Java] Enum class (0) | 2021.02.10 |
[Java] @Builder (0) | 2021.02.10 |
[Java] Source Builder (0) | 2021.02.10 |