본문 바로가기

프로그래밍 언어/Java

Java 변수 심화, 메모리 구조와 변수 저장 원리

Java 변수 심화, 메모리 구조와 변수 저장 원리

Java 프로그래밍에서 변수는 데이터를 저장하고 조작하는 핵심 요소입니다. 하지만 변수가 메모리에 어떻게 저장되며, 어떤 방식으로 작동하는지에 대한 이해는 프로그램의 성능과 안정성에 중요한 영향을 미칩니다. 본 글에서는 Java의 메모리 구조를 살펴보고, 변수 저장 원리를 깊이 있게 분석해 보겠습니다.

 

 

목차

  1. Java의 메모리 구조
  2. 변수의 종류와 저장 위치
  3. 스택(Stack)과 힙(Heap)의 차이
  4. 기본형 변수 vs 참조형 변수
  5. 가비지 컬렉션과 변수 관리
  6. 변수 사용 최적화 방법
  7. 자주 묻는 질문

 

Java의 메모리 구조

Java의 메모리는 크게 Method Area, Heap, Stack으로 구성됩니다.

영역 설명
Method Area 클래스 메타데이터, static 변수, 메서드 코드가 저장됨
Heap 객체 및 참조형 변수 데이터 저장
Stack 지역 변수 및 메서드 호출 시 사용하는 메모리

 

 

 

변수의 종류와 저장 위치

Java 변수는 저장되는 메모리 영역에 따라 세 가지 유형으로 나뉩니다.

  • 지역 변수 (Local Variable) - Stack 영역
  • 인스턴스 변수 (Instance Variable) - Heap 영역
  • 클래스 변수 (Static Variable) - Method Area

 

 

 

스택(Stack)과 힙(Heap)의 차이

Stack과 Heap은 변수 저장 방식에서 큰 차이를 가집니다.

📌 Stack 메모리

  • 메서드 호출 시 생성
  • 메서드 실행이 끝나면 자동 소멸
  • 기본형 변수 및 메서드 내부의 참조 변수 저장

📌 Heap 메모리

  • new 키워드를 사용하여 객체 생성 시 할당
  • GC(Garbage Collection)에 의해 관리됨
  • 인스턴스 변수 저장

 

 

 

기본형 변수 vs 참조형 변수

Java 변수는 크게 기본형 (Primitive Type)참조형 (Reference Type)으로 나뉩니다.

📌 기본형 변수

  • int, double, boolean 등
  • Stack 메모리에 직접 값 저장
  • 연산 속도가 빠름

📌 참조형 변수

  • 클래스, 배열, 인터페이스 등
  • Stack에는 주소(참조값) 저장, 실제 객체는 Heap에 저장
  • GC의 영향을 받음

 

 

 

 

가비지 컬렉션과 변수 관리

Java의 가비지 컬렉션(Garbage Collection, GC)은 사용되지 않는 객체를 자동으로 제거합니다.

📌 GC가 관리하는 대상

  • 더 이상 참조되지 않는 객체
  • 메모리 부족 시 실행

 

 

 

변수 사용 최적화 방법

Java에서 변수를 효율적으로 관리하는 팁을 정리했습니다.

  • 필요 없는 객체 생성을 피하기
  • String 대신 StringBuilder 사용
  • GC를 고려하여 메모리 누수 방지
  • 지역 변수 사용으로 Stack 영역 활용 극대화

 

 

 

자주 묻는 질문

📌 기본형과 참조형 변수의 차이는?

기본형은 Stack에 직접 저장되며, 참조형은 Heap에 저장되고 Stack에는 주소만 저장됩니다.

📌 GC는 언제 실행되나요?

GC는 JVM이 메모리가 부족하거나 필요하다고 판단될 때 자동으로 실행됩니다.

📌 Static 변수는 어디에 저장되나요?

Static 변수는 Method Area에 저장되며, 프로그램 종료 시까지 유지됩니다.