Java Memory

존스노우·2024년 2월 15일
0

독서모임

목록 보기
6/9

JVM 도입은 왜 됬을 까?

자바가 나오던 시절에는 네트워크가 발달하던 시절이라 네트워크로 모든 것이 연결 다기종의 디바이스에서 실행하기위한 프로그램이 필요하다! C,C++ 는 플랫폼 마다 컴파일을 해줘야 되는대.. (핸드폰도 나오고,, 테블릿도나오고 여러가지 기종에 맞게 컴파일 못함) 그래서 자바가 나옴.

디바이스마다 운영체제 하드웨어가 다다르기 때문에 자연스럽게 플랫폼 의존하지 않도록 언어 설계 그 결과가 Java Bytecode , JVM

  • 정리해보면 다기종 디바이스에서 실행하기위해
  • 공통적으로 컴파일을 하기위해 JVM도입?
  • 예제그림.. JVM 없던시절 OS가 달라지면...

  • 자바소스코드가 자바C라는 컴파일러로 실행하면

  • javabyteCode로 변환

  • JVM이 설치된 플랫폼이라면 어디서든지 잘 동작 한다

  • 나머지 실행작업은 JVM 이 다 해주니깐 !

  • 윈도우 jvm .. 리눅스 jvm..

  • 이렇게 된이유가 이제 네트워크 시대가 열리기 시작하면서 부터 위에 참고..
  • 여러가지 기종에 맞게 다양하게 컴파일하기위해 JVM 등장

  • 클래스파일만 network 통해서 브라우저에 전달해주면
  • 해당브라우저에 JVM만 설치해주면? 실행하기만 하면 되겠네
  • 지금 자바스크립트가 이렇게 동작하고있따 (java는 아직안됀다? 브라우저라?)

  • 컴파일러에도 프론트엔드 백엔드가 있따
  • 컴파일러에서 프론트엔드는 안바뀜 왜?
  • 여러분이 짠 소스코드를 분석해서 의미를 파악.
  • 이런 레이어드 아키텍처로 되있음..
  • 프론트엔드는 javac가 컴파일
  • 백엔드는 JVM이 작업해줌

  • 내부구조

runtime data areas

  • JVM이 자바바이트 코드를 실행하는 가상의 기계
  • 여러가지 메모리의 종류 메모리 공간이 필요한대 그때 쓰는게 Runtime Data Areas

  • 변수 ? 메서드? 정적변수? 어떤게 있는가 바이트 코드는 어떤가 저장하는 곳

  • 프로그램을 실제로 실행하면서 생성하는 객체인스턴스를 저장한다.

  • pc 프로그램 카운터
  • 각 스레드는 메서드를 항상 실행한다.

  • pc는 그 메서드안에서 바이트코드 몇번째를 실행하는지? 나타내는 역할

  • 아래로 성장 맨 위에 스택프레임은 메인메서드.
  • 아래는 메인메서드에서 호출하는메서드 -> 반복..
  • 메서드 실행이 끝나면 스택프레임은 pop 되어 제거가 된다.

  • 이런 정보를?
  • 바이트코드를 실행하기위해 반드시 필요한 정보들
  • 내 메서드가 어떤 클래스에 속하는지 ?

  • c나 c++ 코드를 컴파일에서 사용하는 경우가 있따 JVM
  • 그때 사용되는 메서드..
profile
어제의 나보다 한걸음 더

0개의 댓글