Static, Heap, Stack

윤주헌's avatar
Aug 12, 2024
Static, Heap, Stack

JVM (자바 가상 머신) APP 범위 안에 있다

한마디로 한번 만들어서 여러 OS에서 사용할 수 있게 만들어준다 → jvm의 원리에 대해 이야기 할 수 있다
기본적으로 알아야 하는 것 → 제일 아래 HW/ OS/ APP가 순서로 있다.
 
이진법으로 하는 것 보다 기호화(추상화)해서 보낸다
기계어 → 01000 이진법(bin)
HW(기계어) → 1. input장치 (키보드, 마우스) , 2. output장치(모니터, 스피커)가 있다 두 개를 합쳐서 IO라 한다
 
APP으로는 다 명령을 내릴 수 없어서 OS언어 하나는 배워야 한다(리눅스 같은 것) 기계에 가까워질수록 저수준 인간에 가까워 질수록 고수준이라 한다
OS(shell) 예시(echo, dir, cd Music같이) →인간 언어로 바꿈 OS로 명령을 내린다
OS가 HW에 명령을 내린다
 
APP(c언어같은 것) → c언어 단점은 OS에 종속된다 (c언어로 만든다면 OS를 선택해야해서 다른 OS로 하려면 또 만들어야 한다)
 
우리는 JAVA를 사용한다 이 친구는 OS로 바로 명령을 내리지 않고 JVM으로 명령을 내린다
JAVA에서 명령 내리면 JVM으로 알아서 OS에 맞게 바꿔준다.
 
메서드 → 행위다
 
JVM 동장방법
  1. .JAVA(코딩)
  1. .class(컴파일 - JVM이해(JAVAC)) JVM이 이해하게 만듦
    1. JDK안에 JRE(LIB, JVM), 컴파일러(JAVAC)가 있다 사람이 할 때는 javac는 필요 없다 JRE만 필요함(java run time Envirment) lib가 있어야 실행을 할거니까 필요함(system.out 같이 system도 남이 만든 클래스니까)
  1. .class실행(JAVA)이거를 path로 등록해줌 @@JVM이 아래 항목 해준다@@
    1. 클래스 로드
      1. 메모리에 올라가는 것을 ‘로드’ 라고 한다 하드에 있는 것을 메모리에 올린다(하드디스크에 있던 것을 대리고 온다)
      2. 코드에서 static찾기(MAIN, num=10) 스태틱으로 정의 해준 것도 올라간다
      3. static 공간(메모리) 생성 → 클래스가 생긴다 (메모리 공간이라 한다) 찾은 이름 클래스(이름) 스태틱 공간 안에 MAIN이름이 올라간다) 스태틱으로 정의 해준 것도 올라간다
      4. MAIN을 찾는다(메모리 공간(스테틱공간)안에서 )
      5. MAIN 실행 → 만약(main안에 int a = 50; 하면 읽어짐) stack에 임시로 a가 저장된다
      6. MAIN끝나면 자바 프로그램 종료
public class HelloWorld { static int num = 10; //이거는 스테틱 공간에 저장됨 int hi = 20; public static void main(String[] args) { int a = 50;// 이거는 스텍에 저장 System.out.println("Hello World"); } }
스테틱 num 만 정적
new helloWorld하면 hi만 사용됨
 
메모리를 관리해준다 → Heap을 관리해준다 (가비지 컬랙션한다)
c언어가 직접 가비지 날릴 수 있다.
 

예시

태양 static 지구 static 인간
 
시작할 때 태양, 지구 바로 실행 그리고 new해서 인간 막 띄울 수 있다. 있다 없다 있다 없다 함
만약 사람들끼리 싸워 잠깐의 행위 이거를 스택

Static

  • 메인 시작전에 단 한번만 뜨는 정적메모리공간 원하는 시기에 막 띄울 수 없다(한번 뜬거는 설정가능 new해서 만들 수 없다) JVM이 찾아서 1번 띄운다 꼭 단 한번만 떠야 한다.

Heap

  • 데이터가 임시로 저장되는 곳 동적이다(NEW되서)

Stack

  • 메모리 공간에 실행될 때 열리는게 stack이다 실행할 때 잠시 공간이 열린다(임시저장소) 메서드 실행될 때 생겼다가 종료될 때 없어짐
  • 행위가 있을 때 기억했다가 버리는 것 은지누나임
  • 한 마디로 객체 행위 할 때만 기억 한다 즉 제일 짧다
 
Share article

code-sudal