JVM(Java Virtual Machine)

이수보🧑🏻‍💻·2021년 12월 1일
0

초급

목록 보기
10/25
  • JVM (Java Virtual Machine )

  • 자바로 만들어진 프로그램이 실행되는 컴퓨터 안의 가상 컴퓨터

다들 자바 공부하며 한 번쯤은 들어봤을 JVM 즉, 자바 가상 머신
우리는 이 가상 머신으로 인해 운영체제의 제한 없이 자바를 실행할 수 있다.
운영체제라 함은 우리가 흔히 사용하는 Window10를 포함한 window7, Mac, Linux, unix 등등이 존재한다.

  • 운영체제 -> JVM -> 자바 프로그램

하지만, 우리는 Mac 에서도 Linux에서도 별도의 설정 없이 Java를 편안하게 사용할 수 있다.
또한 우리가 작성한 자바 프로그램을 다른 사용자의 컴퓨터에서도 사용자에게 별다른 요구를 필요로 하지 않고 바로 실행 가능하다.

  • 장점 : 운영체제의 상관없이 실행 할 수 있다.
  • 단점 : 속도가 느리다.
  • JVM 메모리 구조

Method Area : 모든 쓰레드가 공유하는 메모리 영역입니다. 메소드 영역은 클래스, 인터페이스, 메소드, 필드, Static 변수 등의 바이트 코드를 보관합니다.

  • 상자에 책을 넣는다고 생각을 하면 될 것 같다. 가장 먼저 넣은 책은 가장 나중에 꺼낼 수 있다.

Heap Area : 모든 쓰레드가 공유하며, new 키워드로 생성된 객체와 배열이 생성되는 영역입니다. 또한, 메소드 영역에 로드된 클래스만 생성이 가능하고 Garbage Collector가 참조되지 않는 메모리를 확인하고 제거하는 영역입니다.

  • new 키워드로 생성된 객체들이 자리잡고 만약 참조되지 않거나 더 이상 사용하지 않는 메모리를 확인하고 제거합니다.

Call Stack : 메서드 호출 시마다 각각의 스택 프레임(그 메서드만을 위한 공간)이 생성합니다. 그리고 메서드 안에서 사용되는 값들을 저장하고, 호출된 메서드의 매개변수, 지역변수, 리턴 값 및 연산 시 일어나는 값들을 임시로 저장합니다. 마지막으로, 메서드 수행이 끝나면 프레임별로 삭제합니다.

  • 지역 변수, 파라미터, 리턴 값, 연산에 사용되는 임시 값등이 생성되는 영역
    우리가 흔히 만드는 int a = 10; 에서 a가 이 영역에 위치한다.
  • 문제
다음의 문장에서 각 메모리 구조를 쓰시오.

SampleClass sc = new SampleClass();
sc = ?
SampleClass객체 = ?

  • 정답
    sc = Stack영역
    SampleClass객체 = Heap영역

그렇다면 Stack영역에서 sc 의 값은??

sc 는 Heap영역에 저장된 SampleClass객체의 주소값을 가지고 있다.

처음에는 이런 것들 알아서 뭐하나 싶었지만 알면 알수록 코딩에 도움이 되는 주옥같은 정보들이고 필수인 정보들이었다.
문법 공부 뿐만아니라 이런 구조도 알아가는 투자를 많이 했으면 좋겠다~~

0개의 댓글