Programming/JAVA
📌Java static 키워드 완벽 정리: 메모리 구조부터 예제까지 한눈에!
추천캐릭터
2022. 10. 30. 16:26
728x90
반응형
Java에서 자주 마주치는 static 키워드, 정확히 어떤 역할을 하고 어떻게 동작할까요?
이번 포스트에서는 static 키워드의 메모리 구조, 특징, 사용 예시까지 한 번에 정리해 드립니다.
✅ static이란?
- static은 클래스 로딩 시 메모리에 한번만 할당되고,
프로그램이 종료될 때까지 공유되고 유지되는 자원입니다. - 객체를 생성하지 않아도 클래스명으로 직접 접근할 수 있다는 것이 특징입니다.
🧠 static의 메모리 구조
구분메모리 영역설명
| 클래스 자체 | Method Area (static 영역) | 클래스 정보 로드 |
| new 생성 객체 | Heap 영역 | Garbage Collector 관리 대상 |
| static 변수/메서드 | Method Area (static 영역) | 프로그램 종료 시까지 유지 |
🔸 static은 GC의 대상이 아니며, 모든 인스턴스가 공유합니다.
📌 static 변수/메소드 특징
- 클래스 변수 (모든 객체가 공통으로 사용)
- 객체 생성 없이도 사용 가능 (클래스명.변수, 클래스명.메서드)
- 자주 사용하면 메모리 누수 위험 존재 (GC가 해제하지 않음)
✅ Java 코드 예시
public class Calculator {
public static String calName = "myBoard";
public static int add(int x, int y) {
return x + y;
}
public int min(int x, int y) {
return x - y;
}
}
☑ 사용 예시
Calculator.add(5, 1); // ✅ 객체 없이 사용 가능
Calculator.min(5, 1); // ❌ 오류 (static 아님)
Calculator cal = new Calculator();
cal.add(5, 1); // 가능은 하지만 ❗비권장
cal.min(5, 1); // 정상 사용
⚠ static 사용 시 주의사항
- 전역 상태처럼 작동하므로 남용 시 테스트 어려움, 의존성 증가
- 웹 서버 환경에서는 동시성 이슈 발생 가능성
- 주로 공용 유틸성 클래스 또는 상수 선언에 사용
728x90
반응형