Java와 C++ 메모리 관리 차이(JVM을 위한 기초)

인프런 - 널널한 개발자님의 [기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM] 강의를 수강하며 구글링과 함께 정리한 내용입니다😀

 

컴퓨터의 기본 구조

Computer는 기본적으로 H/W와 S/W로 이루어져 있다.

하드웨어 (H/W)

- CPU : 실제 물리적인 Machine (하드웨어라고 할 때 주로 CPU를 의미)

- Machine Code: 이 CPU가 이해하는 언어

소프트웨어 (S/W)

소프트웨어는 크게 두 영역으로 구분된다.

  1. System 영역
    - 운영체제(OS): System 영역의 가장 대표적인 것
    - Kernel: 운영체제의 핵심적 알맹이
  2. Application 영역
    - User Application: Application 영역
    - Process: Application이 동작하는 방식

Native 개발 영역

Native 영역 = System 영역 + Hardware 영역 까지 포괄하는 개념

특징

  • 사용언어 : C, C++ 같은 네이티브 언어로 개발
  • 컴파일 방식 : 고급 프로그래밍 언어이지만, Machine이 이해할 수 있는 머신코드로 직접 번역해서 실행
  • 의존성 : 하드웨어와 운영체제 환경과 직접적인 의존성이 존재

JVM(Java Virtual Machine)

Virtual Machine의 개념

  • 정의 : Machine인데 소프트웨어적으로 구현한 것
  • JVM : 자바 바이트 코드를 실행하는 가상 머신

JVM의 구조

JVM은 완전한 가상 컴퓨터로서 실제 컴퓨터의 구성 요소들을 소프트웨어로 구현한다.

  • 가상 CPU : 바이트코드를 해석하고 실행
  • 가상 메모리 : RAM과 보조기억장치(SSD)를 가상 메모리로 추상화

JVM의 복합적 특성

: JVM은 아래와 같이 여러 역할을 동시에 수행한다고 보면 된다!

  • 유저모드 애플리케이션 프로세스로서 운영체제 위에서 실행
  • 가상 메모리 공간을 실제 메모리처럼 관리
  • 머신으로서의 연산 처리 기능 제공
  • 운영체제 기능의 일부까지 포함

Java 프로그램 실행 과정

.java 파일 → 컴파일 → .class 파일 → JVM 프로세스에서 실행


Java와 C++ 메모리 관리 비교

C++의 메모리 관리

  • 높은 자유도 : 개발자가 모든 메모리 관리를 직접 제어할 수 있다
  • 수동 관리 : 객체를 생성하고 삭제하는 것도 개발자가 직접 처리해야 한다
  • 생명주기 관리 : 객체의 전체 생명주기에 개발자가 모두 개입한다.

Java의 메모리관리

  • 자동 관리 : GC(Garbage Collector)가 메모리 해제를 자동으로 처리해준다.
    • GC 동작 원리 : new로 생성한 인스턴스 중에서 더 이상 참조하는 곳이 없는 객체를 자동으로 회수한다.
  • JVM 구조 이해 필요성 : JVM이나 GC에 문제가 발생했을 때 내부 구조를 알아야만 대응이 가능하다는 것이 가장 큰 단점이다

'지식을 쌓아보자 > JAVA' 카테고리의 다른 글

Runtime Data Area  (0) 2025.08.25
JVM 구성 파헤치기(작성 중)  (0) 2025.08.25