TIL

자바 Static 왜 쓰는지.

하얀잔디 2022. 11. 3. 16:01
이유 : 공통으로 쓰기 위함.

 

메모리 관점 : 

static 메소드와 static변수는 클래스 멤버라고 불림. 클래스에 고정된 멤버임. 인스턴스와 관계없다.

 

Static 영역에서 관리한다.

 

장점: 

가비지 컬렉션의 관리 영역 밖임. -> 프로그램의 종료시까지 메모리가 할당된 채로 존재함.

 

단점:

너무 남발하면 시스템 성능에 악영향을 줄 수 있음.

 

 

코드 영역 살펴보자. 매~~번 헷갈리니까

 

static 영역 : 전역변수, static 멤버

 

heap 영역 : 객체, 인스턴스가 할당됨. new 연산자를 통해 , 이 heap 영역의 주소를 참조하는 값을 반환함! 

 

stack 영역 : 기본 자료형 ( int, double, long , char ,boolean) 이 저장되는 곳 +  위에서 주소를 참조한 값같은 것이 들어감.

 

* String 은 기본자료형이 아니기에 heap 영역에 들어간다고 생각하면 된다!

+ int같은 기본자료형은 stack에 저장되기 때문에 JVM 에서 "직접참조" 를 하고,

Integer같은 wrapper type은 heap에 저장되기 때문에 JVM에서 "간접참조" 를 한다. (중간에 핸들메모리) 

 

-> 자주 사용되는 변수나 객체가 있다면 직접참조가 더 빠름!

 

+

 

클래스 내 인스턴스 변수 가 필요 없다면 -> static 메소드를 사용하는걸 고려하기. ( 호출시간이 짧아짐)

'TIL' 카테고리의 다른 글

instanceof  (0) 2022.11.08
Annotation이란?  (0) 2022.11.08
ER 다이어그램 정리  (0) 2022.11.02
interceptor vs Filter  (0) 2022.10.27
Spring Security Form 인증 과정  (0) 2022.10.26