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

개발자 로그·2021년 5월 24일
0


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

평소에도 객체지향에 대한 개념이 확실히 잡히지 않았다는 생각이 들어
쉬운 책부터 읽자는 마음으로 읽게된 도서!
JVM의 메모리 구조, 객체 지향 언어, SOLID 원칙에 대해 쉽게 배울 수 있었다!



자바 프로그램의 개발과 구동

현실세계 vs 가상세계

현실세계가상세계
소프트웨어 개발 도구JDK - 자바개발도구 ( JVM용 소프트웨어 개발 도구 )javac.exe(컴파일러) 포함
운영체제JRE - 자바실행 환경 ( JVM용 OS )java.exe(프로그램 실행기) 포함
하드웨어 ( 컴퓨터 )JVM - 자바 가상 기계 ( 가상의 컴퓨터 )

main() 메서드

main() 메서드가 실행되기 전 JVM에서 수행하는 전처리 작업들

  • java.lang패키지를 메모리의 스태틱 영역에 배치한다
  • import된 패키지를 스태틱영역에 배치한다
  • 프로그램 상의 모든 클래스를 스태틱영역에 배치한다

변수와 메모리

  • 지역변수스택영역의 스택 프레임 안에서 일생을 보낸다

    • 스택 프레임은 { } 단위로 생성된다.

      외부 스택 프레임에서 내부 스택 프레임의 변수에 접근하는 것을 불가능 하나, 그 역은 가능하다.

  • 클래스 멤버 변수스태틱 영역에서 일생을 보내며 jvm이 종료될 때까지 고정된(static)상태로 그 자리를 지킨다.

  • 객체 멤버 변수에서 일생을 보내며, 객체 멤버 변수들은 객체와 함께 가비지 컬렉터라고 하는 힙 메모리 회수기에 의해 일생을 마치게 됨


멀티 스레드 / 멀티 프로세스

  • 멀티 프로세스

    • 각 프로세스 마다 각자의 메모리가 있고 각자 고유의 공간으로 서로 참조할 수 없다
    • 하나의 프로세스가 다른 프로세스의 메모리 영역을 절대 침범할 수 없는 메모리 안전한 구조이지만 메모리 사용량은 그만큼 큼
  • 멀티 스레드

    • 하나의 메모리만 사용하며, 스택 영역만 분할해서 사용하는 구조
    • 하나의 스레드에서 다른 스레드의 스택 영역에는 접근할 수 없지만 스태틱 영역과 힙 영역은 공유해서 사용하는 구조 → 멀티 프로세스 대비 메모리를 적게 사용할 수 있는 구조
profile
성장하는 개발자

0개의 댓글