Spring/스프링입문을 위한 자바객체지향의 원리와 이해

멀티스레드 vs 멀티프로세스의 메모리 구조 차이

1space 2025. 6. 29. 16:23

스프링입문을 위한 자바 객체지향의 원리와 이해』로 공부한 내용을 정리한 글입니다.

 

멀티스레드(Multi-thread)

멀티스레드는 하나의 프로그램(=프로세스) 안에서 여러 개의 작업 흐름(스레드)이 동시에 실행되는 구조입니다.

  • 특징: 스레드들은 하나의 프로그램이기 때문에 코드, static 변수, 힙 영역은 공유합니다.
  • 다르게 사용하는 부분: 각 스레드는 스택 영역을 따로 가짐 → 각자 자신의 지역 변수나 메서드 호출 정보를 따로 저장함.

쉽게 말하면:

여러 사람이 한 집에서 함께 사는데, 거실/부엌/냉장고는 공유하고, 방은 따로 있음.

 

멀티프로세스(Multi-process)

멀티프로세스는 여러 개의 독립적인 프로그램(프로세스)이 동시에 실행되는 구조입니다.

  • 특징: 각각의 프로세스가 자신만의 코드, static 변수, 힙, 스택 영역을 가짐 → 다른 프로세스와는 메모리를 전혀 공유하지 않음.
  • 서로 간섭 없음: 하나의 프로세스에서 발생한 문제는 다른 프로세스에 영향을 주지 않음.

쉽게 말하면:

여러 사람이 각자 다른 집에 살고 있음. 냉장고도 따로, 방도 따로, 아무것도 공유하지 않음.

 

 

왜 이 차이가 중요할까?

  • 멀티스레드는 메모리를 공유하므로 자원 접근이 빠르고 효율적이지만, 공유 변수 때문에 충돌이 발생할 수 있어 동기화(lock) 같은 제어 기법이 필요함.
  • 멀티프로세스는 서로 간섭하지 않기 때문에 안정적이지만, 데이터를 주고받을 때 속도가 느리고 복잡함 (ex. IPC 사용 필요).