자바 가상 머신2 (JVM)

Ahn yi·2022년 10월 1일
0

학습목표

1. 이해 없이 개념만 알고 지나간 저번과 달리 강의 및 책 내용으로 인하여 약간의 이해가 생기게 되었다.
2. 완벽하지는 않겠지만 조금씩 성장해나가는 JVM 이해를 위해...
3. 원래 알려고 했던 heap, stack 관련 간단하게 정리!

JVM 런타임 데이터 영역

  • 메소드 영역 : 클래스(~.class)들을 클래스 로더로 읽어 클래스별로 런타임 상수 풀, 필드 데이터, 메소드 데이터, 메소드 코드, 생성자 코드 등을 분류해 저장한다.
  • 힙 영역 : 객체와 배열이 생성되는 영역으로 JVM 스택 영역에서 생성된 변수나 다른 객체의 필드에서 이 곳에 있는 객체와 배열을 참조한다.
    프로그램에서 사용되는 객체, Object는 힙 영역에 할당된다.
  • 스택 영역 : 스레드마다 하나씩 존재하며, 스레드가 시작할 때마다 JVM 스택 영역이 할당된다.
    메소드는 스택 영역에 할당된다.

자바 개발 도구 (JDK)

  • 프로그램에 필요한 자바 가상 기계(JVM). 라이브러리 API, 컴파일러 등의 개발 도구가 포함된 소프트웨어 패키지

자바 실행 환경 (JRE)

  • 자바 프로그램 실행에 필요한 가상 기계(JVM). 라이브러리 API가 포함된 소프트웨어 패키지

JDK (개발에 필요한 도구) > JRE (표준 클래스 라이브러리) > JVM
JDK/JRE는 운영체제 등에 따라 다르다.
JVM만이 여러 운영체제에서 동작한다.

마지막으로...

저번에 heap, stack 영역을 찾기 위해 혼자 이것저것 찾다가 도착한 곳이 JVM 이어서 JVM 개념을 훑어 보고 지나갔다. 그러다가 마침 이번에 강의로 메모리 영역에 관하여 듣게 되어 연관지어서 이해가 어느정도 되었다. 어느정도의 흐름 정도만 깨달은 거 같다. 다음에 또 다시 메모리 관련 영역이 나온다면 조금 더 성장할 수도....
추천받은 '스프링 입문을 위한 자바 객체 지향의 원리와 이해' 책을 샀다. 스터디내에서 책으로 공부를 한다고 하니 개념 정리에 도움이 될 거 같다. 그렇다고 알고리즘을 건너띄지 않고 하루 1~2개 목표로 진행중이다. 점점 적응되겠지...
오늘의 알고리즘은 약수의 합을 구하는 내용이었는데, 기존 같았으면 for문으로 전체를 돌렸겠지만 시간복잡도에 대한 생각을 가지고나서 짝수, 홀수로 나눈후 2/n, 3/n으로 생각나는대로 최대한 줄여서 진행시켰다. 몇몇 다른 사람들은 짤/홀수 둘 다 n/2로 해서 내가 더 빠를거라고 생각했다.

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

0개의 댓글