2025/08 4

[JVM 밑바닥까지 파헤치기] 2장 자바 메모리 영역과 오버플로우

자바 스레드, 동시성 강의와 책을 병행하려고 한다. 런타임 데이터 영역https://gothax.tistory.com/48강의에서 본 자바 메모리 영역을 이렇게 봤었다.책을 읽어보니 조금 더 자세하게 나와있었다. 프로그램 카운터 (Program Counter Registry)이부분이 위 그림에 안나와 있었다 편의상 생략된듯 pc register는 작은 메모리 영역으로현재 실행중인 스레드의 바이트코드 줄 번호 표시기라고 할 수 있다. 스택 영역에서 메서드를 실행할때마다 스택 프레임을 쌓고, 코드를 한줄한줄 실행한다고 했던거 기억이 나는가?여기서 그 한줄한줄 실행할때 어디인지를 기록하는 것 좀더 이론적으로바이트코드 인터프리터가 이 카운터의 값을 바꿔 다음 실행할 명령어를 선택하는 식으로 작동한다.이를 ..

SUMMARY/JAVA 2025.08.15

[JAVA 고급1] 3. 스레드 제어와 생명주기 1

스레드 생명 주기 OS에서도 많이 본 그림인데 하나씩 살펴보면 - New 스레드가 생성되었지만 시작되지 않은 상태 start 메서드를 호출하지 않은 상태이다. - Runnable 스레드가 실행중이거나 실행될 준비가 된 상태 start 메서드를 호출하면 해당 상태로 들어간다 OS 스케줄러가 각 스레드에 CPU 시간을 할당해 실행하기 때문에 (time waiting) Runnable 상태 스레드는 실행 대기열에 포함되었다가 차례로 CPU에서 실행된다. - 자바에서는 이를 구분할 수 없다 - 일시 중지 상태들 - Blocked : 스레드가 락을 기다리는 상태 (뒤에서 synchronized와 모니터 락을 배운다) - Waiting : 스레드가 무기한으로 다른 스레드의..

SUMMARY/JAVA 2025.08.13

[JAVA 고급1] 2. 스레드의 생성과 실행

Java 메모리 구조 Java 메모리는 3가지 영역으로 구성되어 있다 - 메서드 영역 Method Area 프로그램을 실행하는데 필요한 공통 데이터를 관리한다 그러므로 프로그램의 모든 영역에서 공유 안에 있는 3가지는 각각 클래스 정보 : 클래스 실행 코드, 필드, 메서드, 생성자등 모든 실행코드 static 영역 : static 변수 보관 런타임 상수 풀 : 공통 리터럴 상수 - 스택 영역 Stack Area 스레드 별 하나의 실행 스택이 생성된다 (스레드 수 만큼 스택이 생성된다) 네모칸 하나가 스택 프레임이고 지역 변수, 중간 연산 결과, 메서드 호출 정보를 포함한다 메서드를 호출할 때 마다 하나의 스택 프레임이 쌓이고, 메서드가 종료되면 해..

SUMMARY/JAVA 2025.08.11

[JAVA 고급1] 1. 프로세스와 스레드

자바 멀티 스레드를 이해하기 위해 OS 수준의 프로세스와 스레드 환경을 이해해야 한다학교 운영체제 시간에 다 배우기는 했지만 맨날 헷갈리니 다시 정리 멀티 태스킹 멀티 태스킹과 프로세싱을 이해하기 위해 단일 CPU라고 가정하자 (하나의 CPU 코어) 하나의 코어가 하나의 일만 할 수 있다면?즉 하나의 프로그램만 실행할 수 있다면 A프로그램이 다 돌아가고 B프로그램이 돌아가게 될 것이다.밑에 그림처럼 이를 해결하기 위한 것이 멀티 태스킹이다. 멀티 태스킹이 가능하다면 위 사진처럼프로그램 A, B를 짧은 시간동안 번갈아가며 실행한다그리고 사용하는 입장에서는 A와 B가 동시에 실행되는 것 처럼 느껴질 것이다. (현대 CPU는 1초에 수십억번의 연산이 가능하기 때문에 우리는 이렇게 번갈아 가며 수행하는 ..

SUMMARY/JAVA 2025.08.11