ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [독후] 자바 객체지향의 원리와 이해, 김종민, 위키북스, 2015
    일상기록/독서 2021. 7. 13. 23:55

    출처 : 알라딘

    김종민(지은이) | 위키북스 | 2015-04-08

     

    ▶ 들어가기

    <자바 객체지향의 원리와 이해> 서적을 읽으면서 주요 내용을 기록해 둠

     

    02. 자바와 절차적/구조적 프로그래밍

    1. 함수(function) vs 메서드(method)

    - 함수는 클래스나 객체와 아무 관계가 없지만 메서드는 반드시 클래스 정의 안에 존재해야 함

     

    2. 프로그램이 메모리를 사용하는 방식

    - 일반적으로 메모리는 코드 실행 영역과 데이터 저장 영역으로 구분할 수 있는데, 운영체제나 언어 자체를 개발하는 로우 레벨 개발자가 아닌 일반 개발자의 경우 "데이터 저장 영역(일명 T메모리)"을 살펴 보면 된다. (코드 실행 영역은 '어셈블리어'를 공부하면 됨)

    코드 실행 영역 스태틱(static) 영역
    스택(stack) 영역 힙(heap) 영역

    1) 스태틱 영역 (클래스들의 놀이터)

        - JVM이 가장 먼저 java.lang 패키지를 스태틱 영역에 배치

        - import된 모든 패키지를 스태틱 영역에 배치

        - 모든 클래스를 스태틱 영역에 배치

        - static 키워드를 붙혀 스태틱 영역에 공간 할당

    2) 스택 영역 (메서드들의 놀이터)

        - main() 메서드 수행을 위해 'main() 메서드 스택 프레임' 을 스택 영역에 배치

        - 메서드 호출이 일어나면 무조건 호출되는 메서드의 스택 프레임이 스택 영역에 새로 생성됨

    3) 힙 영역 (객체들의 놀이터)

     

    3. 변수! 너 어디 있니?

    - 프로그램에서 사용되는 변수는 메모리에 위치함

    - 지역 변수 : 스택 영역에 생성되는 '스택 프레임(stack frame)' 안에 위치

    - 클래스 멤버 변수 : 스태틱 영역에 위치하며, JVM이 종료될 때까지 고정된(static) 상태로 유지

    - 객체 멤버 변수 : 힙 영역에 위치하며, 가비지 컬렉터라고 하는 힙 메모리 회수기에 의해 종료

     

    4. 멀티 스레드 vs 멀티 프로세스

    - 프로세스 (process) : 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 의미

      프로그램에 사용되는 데이터와 메모리 등의 자원, 스레드로 구성됨

    - 스레드 (thread) : 프로세스 내에서 실제로 작업을 수행하는 주체를 의미. 모든 프로세스는 1개 이상의 스레드가 존재하며, 2개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process) 라 지칭


    - 멀티 스레드 (multi thread) : 하나의 데이터 저장 영역(T메모리) 내 스택 영역을 스레드 개수만큼 분할해서 사용

    스태틱 영역
    스택 영역 힙 영역
    스레드 스레드

    - 멀티 프로세스 (multi process) : 다수의 데이터 저장 영역(T메모리)을 갖는 구조

    스태틱 영역   스태틱 영역   스태틱 영역
    스택 영역 힙 영역   스택 영역 힙 영역   스택 영역 힙 영역

    - 멀티 프로세스는 각 프로세스마다 각자의 '데이터 저장 영역(T메모리)'가 있고 각 프로세스 고유 공간이기 때문에 서로 참조 불가하며 프로세스 수 만큼 '데이터 저장 영역'을 생성하기 때문에 메모리 사용량은 높음

    - 멀티 스레드는 하나의 '데이터 저장 영역(T메모리)' 안에서 스택 영역만 분할해서 사용하기 때문에 각 스레드 간 스택 영역에 접근 불가하지만 스태틱 영역과 힙 영역은 공유해서 사용 가능 => 멀티 프로세스 대비 메모리를 적게 사용(자바 웹 프로그래밍에서 많이 사용하는 기술)

    댓글

Designed by Tistory.