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

김건우·2023년 12월 19일

개발 공부

목록 보기
8/13
post-thumbnail

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

JVM (Java Virtaul Machine)

  • JDK : Java Development Kit. JVM용 소프트웨어 개발 도구

  • JRE : Java Runtime Environment. JVM용 OS

  • JVM : Java Virtual Machine. 가상의 컴퓨터

  • 자바 개발 도구인 JDK를 이용해 개발된 프로그램은 JRE에 의해 가상의 컴퓨터인 JVM상에서 구동된다.

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

  • 스태틱 영역 : 클래스들이 저장되는 영역
  • 스택 영역 : 메소드들이 저장되는 영역
  • 힙 영역 : 객체들이 저장되는 영역

  • JVM은 맨 위의 스태틱 영역에다가 java.lang 패키지를 포함시킨다.
  • 다음으로 개발자가 작성한 모든 클래스임포트 패키지 역시 스태틱 영역에 가져다 놓는다.

블록 프레임

  • 블록 프레임 : if나 함수의 블록(중괄호) "{" 이 시작될 때 블록 프레임이 생성된다.
    반대로 "}" 을 만나면 해당 프레임은 스택 영역에서 사라진다.
    • if 블록 스택 프레임을 수행하는 중에 외부에 존재하는 변수에 접근이 가능하다.
      그 역은 불가능하다.
  • 지역 변수는 스택 프레임, 클래스 멤버 변수는 스태틱 영역, 객체 멤버 변수는 힙에서 일생을 보낸다.
  • 전역 변수 사용 지양 -> 이유?

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

멀티 스레드(Multi Thread) : 스택 영역을 스레드 개수만큼 분할해서 쓰는 것.
멀티 프로세스(Multi Process) : 다수의 T 메모리를 가져다가 쓰는 구조.

  • 멀티 프로세스 : 각 프로세스마다 각자의 T 메모리가 있고 각자 고유의 공간이므로 서로 참조할 수 없다.

    • 프로세스가 서로의 영역을 절대 침범할 수 없는 안전한 구조이지만 메모리 사용량은 그만큼 크다.
  • 멀티 스레드 : 하나의 T 메모리 안에서 스택 영역만 분할한 것이기 때문에 다른 스레드의 스택영역에는 접근할 수 없지만, 스태틱 영역힙 영역은 공유해서 사용하는 구조다.

    • 따라서 멀티 프로세스 대비 메모리를 적게 사용할 수 있는 구조다.
  • 서블릿(Servlet) : 요청당 프로세스가 아닌 요청당 스레드를 생성한다. -> 메모리 효율 상승

  • 멀티 스레드에서 전역 변수 사용 : 쓰기 가능한 전역 변수를 사용하게 되면 스레드 안전성이 깨진다.

자바의 객체 지향

객체 지향의 4대 특성 - 캡! 상추다

캡 - 캡슐화(Encapsulation) : 정보 은닉
상 - 상속(Inheritance) : 재사용
추 - 추상화(Abstraction) : 모델링
다 - 다형성(Polymorphism) : 사용 편의

추상화 : 모델링

해당 개체를 분해해서 내가 필요한 영역(관심 영역)의 특성만 가지고 재조합(모델링)하기

  • 자바에서 클래스와 객체의 관계
    • 클래스 객체참조변수 = new 클래스();
    • 객체참조변수 : 생성된 객체를 참조할 수 있는 변수. 스택 프레임에서 힙의 해당 객체를 가리킨다.

클래스 멤버 vs 객체 멤버

  • static으로 선언된 속성은 클래스 멤버 속성으로 분류되고, static이 안 붙은 속성은 객체 멤버 속성으로 분류된다.
profile
즐겁게

0개의 댓글