ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA 기초 1
    OOP & JAVA 2021. 6. 1. 00:33

     

    최초에 java의 정석을 공부한 이래로 6개월후 다시 "이것이 자바다"를 통해 자바에 대해

    복습한뒤 이 글을 남긴다. 복습의 이유로는

     

    첫번째. 공부하지 않고 넘어간 부분들을 공부하기 위해

    두번째. 공부했엇지만 까먹었던 부분을 복습하기 위해

     

    이었고 , 공부하던중 전에는 이해가 되지 않았던 부분이었지만 이제는 이해가 되는 부분도 많고

    전에는 잘못이해하고 있었던부분이 있어 기록으로 남기게 되었다.

     

     

    1. 자바 동작 원리

    바이너리 파일 -> cpu가 이해하는 이진파일(기계어는 바이너리 파일이지만 모든 바이너리파일이 기계어는 아니다)

    바이트 파일    -> 가상머신이 이해하는 이진 파일 

    자바는 .java 의 소스파일을 컴파일러 (javac.exe) 를 통해 바이트코드파일 (.class) 로 변환하고 이 파일이 JVM 위에서 동작하게 된다.  바이트 코드 파일( .class)은 어떤 운영체제에서도 동일하게 작성하지만 JVM(자바 가상 머신)은 운영체제에 비독립적이며 각 운영체제별로 다른 방식으로 동작하게 된다.

     

    자바를 통한 개발및 동작을 위해서는 JDK 와 JRE 가 필요하며 

    JRE = JVM + 표준 클래스 라이브러리

    JDK = JRE +  개발에 필요한 도구

    이다. JRE 만을 설치한다면 개발을 제외한 run만을 동작 시킬 수 있다. JDK 는 JRE를 포함한다.

     

    2. JVM

    : JVM 메모리 영역은 크게 메소드 영역 , 힙영역 , JVM 스택 영역으로 나뉜다. 

     

    - 메소드 영역 (클래스들을 저장 및 관리하는 영역)

    : .class 들을 클래스 로드로 읽어 클래스별로 상수풀 , 필드 데이터 , 메소드 데이터, 생성자 코드 등을 분류 저장함 , JVM 이 시작할때 생성되고 모든 스레드가 공유하는 영역

     

    - 힙 영역 (객체와 배열이 생성되는 영역)

    : 배열이나 객체들은 스택값이 아닌 힙영역에 실제 값들이 저장되며 스택 에는 주소 값이 저장된다. 또한 JVM 은 쓰레기 수집기 가 존재해 참조하는 변수나 필드가 없다면 해당 객체를 힙에서 제거한다.

     

    - JVM 스택 (쓰레드별 영역)

    : 쓰레드 별로 하나씩 존재하고  기본 타입 변수의 값들은 해당 공간에 저장된다. 실제로 해당 클래스를 런시키면 메소드 영역에서 해당 클래스 정보가 로드 되고 main 메서드를 통해서 main 쓰레드가 가장먼저 스택 위로 올라가 실행되어진다.

    댓글

Designed by Tistory.