인프런 - 널널한 개발자님의 [기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM] 강의를 수강하며 구글링과 함께 정리한 내용입니다😀
컴퓨터의 기본 구조
Computer는 기본적으로 H/W와 S/W로 이루어져 있다.
하드웨어 (H/W)
- CPU : 실제 물리적인 Machine (하드웨어라고 할 때 주로 CPU를 의미)
- Machine Code: 이 CPU가 이해하는 언어
소프트웨어 (S/W)
소프트웨어는 크게 두 영역으로 구분된다.
- System 영역
- 운영체제(OS): System 영역의 가장 대표적인 것
- Kernel: 운영체제의 핵심적 알맹이 - 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 |