자바 가상 머신 (JVM)

Ahn yi·2022년 9월 29일
0

학습내용

  • Class 공부 중에 stack과 heap에 대한 언급이 있어 궁금증으로 인하여 찾아보게 되었다.

    1. Java Virtual Machine (JVM )
    2. JVM 내의 stack, heap 영역

Java Virtual Machine (JVM )이란?

  • Java로 개발한 프로그램을 컴파일하여 만들어지는 바이트코드를 실행시키기 위한 가상머신으로, JRE(Java Runtime Environment)에 포함되어 있다.
  • JVM은 플랫폼 독립적으로, JVM이 실행 가능한 환경이라면 어디서든 Java 프로그램을 실행할 수 있다.
  • JVM은 가비지 컬렉션을 수행하여 할당되었다가 더 이상 사용하지 않는 메모리를 회수한다.
  • stack 기반의 가상 머신이다.
  • 단일 상속 형태의 객체 지향 프로그래밍을 가상 머신 수준에서 구현한다.
  • JVM 구조

Class Loader

  • 자바 클래스를 자바 가상 머신으로 동적 로드하는 자바 런타임 환경(JRE)의 일부이다.
  • 클래스 로더는 라이브러리를 위치시키고 내용물을 읽으며 라이브러리들 안에 포함된 자바 클래스를 읽는 역할을 한다.
    - Jar 파일에 포함된 가장 중요한 형식의 오브젝트는 자바 클래스이다.

Stack 영역(정적 메모리 할당)

  • stack 영역은 자료를 순차적으로 저장한다.
  • 최근에 들어간 데이터가 먼저 나온다는 의미의 LIFO(Last In First Out)구조이다.
  • 기본타입을 저장한다.
    - 정수타입(byte, char, short, int) 실수타입(float, double), 논리타입(boolean)
  • 메소드 작업이 종료되면 할당되었던 메모리 공간은 반환되어 비워진다.

Heap 영역(동적 메모리 할당)

  • 동적 메모리 할당은 실행 시간 동안 사용할 메모리 공간을 할당한다는 의미이다.
  • 정적 메모리 할당과 대조적이다.
  • 정적 메모리 공간은 알아서 메모리가 회수되지만, 동적 메모리 공간은 명시적 헤제 혹은 garbage collect가 일어나기 전까지 유지된다.
  • 참조타입을 저장한다.
    - 배열타입, 열거타입, 클래스 (Class), 인터페이스
  • heap 영역은 객체와 배열이 생성되는 공간이고 참조타입이 저장된다.

stack과 heap

  • 정적으로 할당된 stack의 메모리의 참조 값을 heap에 넘겨 값을 쓸 수 있게 동적으로 만들어 준다. 이를 동적 메모리 할당이라고 한다.

마지막으로...

알고리즘 실전 테스트가 있어서 따로 알고리즘 문제풀이를 진행하지 않고 기존에 풀었던 문제에 대해 복습을 한 하루였다. 시험 결과는 나오지 않았지만 평소 사용하고 싶었던 HashMap을 사용하여 중복되지 않는 특성을 가진 key값을 이용하여 문제의 중복 제거 부분을 해결하였다. HashMap에 대해 재미를 느꼈으며, 매번 if문과 for문을 바탕으로 처리하지 않고 Map, Set, List 등을 이용하여 문제 풀이를 해야겠다.
그리고 Class에 대해 공부하다가 저장 영역 부분이 나와 JVM에 대해 짧게나마 공부해보았는데 아직 부족한거 같다. 우선 코딩을 하며 다른 것들을 공부해보면서 Class와 JVM등의 깊은 내용은 차차 알아가는게 낫다고 생각한다.

추가적으로...

강의를 들은 결과, 다른 부분보다 method -> stack 영역, Object -> heap 영역이 제일 기억에 남았다.

profile
소통을 잘하고싶은 백엔드 개발자

0개의 댓글