티스토리 뷰

Java

[Java] static 변수와 static 메소드

Jane Kwon 2021. 2. 10. 16:57
반응형

 

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
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함