자바

JVM 아키텍처 - 4

열곰탱 2022. 7. 27. 16:05

 

프로그램을 구동하기 위해서는 운영체제(OS)가 메모리(RAM)에

데이터 및 명령어를 저장할 공간을 할당하여 줍니다.

메모리는 컴퓨터에 있어 가장 핵심이 되는 부품이고,

CPU가 처리할 데이터가 임시로 저장되는 공간입니다.

 

c언어

JAVA

 

 

C언어는 unmanage언어(비관리) 언어라고 불리며 heap의 쓰레기값을 제거해주지 않아서 직접버려야한다.

java는 manage언어(관리) 언어라고 불리며 heap에서 관리를 한다. 

효율적으로 쓰레기를 제거하기 위해서는 직접관리하는 C가 더 좋다.

 

C언어는 운영체제에 맞게 window, mac용 따로 코드를만들어야 한다.

JAVA는 컴파일을 운영체제에 맞게 해준다. 설치만 window, mac용에 맞게 설치하면 된다. 코드는 똑같다,

 

 

 

JVM 아키텍쳐는 JVM의 구조를 말한다.

JVM 아키텍처 - 코드만 작성하면 window, mac용으로 변환해준다.

 

JVM 아키텍처

메모리를 효율적으로 활용하기 위해서 heap, stack, static으로 나눔

 

heap

전역변수로 메모리 효율이 좋다. 생성과 소멸이 동적으로 이루어지는 공간이다.

쓰레기 값들이 있는 곳이다.

 Heap은 참조형의 데이터 객체에 실제 데이터들이 담기는 공간이고,

실제 데이터를 가지고 있는 Heap 영역의 참조값을 Stack 영역의 객체가 가지고 있는 것

 

stack

지역변수로 행위를 할때 잠깐 기억해야 할것들을 저장하는 공간. 

heap이 행위를 할때 실행한다.

기본형 타입 변수의 값들은 Stack 영역에 저장되고, 참조형 타입 변수는 참조값만 저장됩니다.

이 참조값은 아래서 설명할 Heap 영역에 존재하는 인스턴스(객체)를 가르키는 역할을 합니다. 

 

static

정적변수로 프로그램 시작전에 사용, 프로그램이 시작하면 이공간에 더 추가할수없다.

프로그램 종료될때 사라진다. 

프로그램이 종료될 때까지 어디서든지 사용이 가능하지만,

주의할 점은 전역 변수를 무분별하게 많이 사용하게 되면 메모리가 부족한 문제가 발생할 수 있습니다.

따라서 필요한 변수만 전역 변수로 사용할 필요가 있습니다. main이 있다.

 

 

 

 

 

메서드안에는 메서드를 못적는다.

메서드는 하나의 기능만 가지고 있다.

 

static으로 한 메서드는 new를 사용할 필요가없다
- static을 사용하면 메모리에 바로뜨기때문에 new를사용할 필요없다.
- 바로 메인함수에서 바로 찾으면 된다.

- new 사용 이유 : 메모리에 띄우기 위해
new하면 heap 메모리공간으로 저장된다.