-
[Java]짧게 훑어보는 Java 간단 지식(Java란, 컴파일 과정, JVM, GC, 메모리 영역)리뷰노트/Java 2023. 11. 21. 20:39
*제목 그대로 Java의 기본적인 지식을 짧게 되새김 할려고 합니다.
Java 란
- 객체지향 프로그래밍 언어입니다.
- 기본 자료형을 제외한 모든 요소들이 객체로 표현되고, 객체 지향의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어입니다.
- JVM(자바가상머신) 위에서 동작하기 때문에 운영체제에 독립적이라는 장점을 갖고있습니다. (반대로 JVM 위에서 동작하기 때문에 실행속도가 상대적으로 느리다는 단점을 가지고 있습니다.)
- GC(Garbage Collector)를 통한 자동적인 메모리 관리가 가능합니다.
- 다중 상속이나 타입에 엄격하며 제약이 많습니다.
Java 컴파일 과정
- 개발자가 .java 파일을 생성 후
- build 를 합니다.
- 그러면 Java compiler의 javac 명령어를 통해 .class 파일(byte code)이 생성됩니다.
- Class Loader를 통해 JVM 메모리 내로 로드합니다.
- 실행엔진을 통해 컴퓨터가 읽을 수 있는 기계어로 해석됩니다.
JVM
- 스택 기반으로 동작하며 Java Byte Code를 OS에 맞게 해석해주고 GC를 통해 자동적인 메모리 관리를 해줍니다.
GC(Garbage Collection)
- JVM의 메모리 관리 기법 중 하나로 시스템에서 동적으로 할당됐던 메모리 영역 중에서 필요없어진 메모리 영역을 회수하여 메모리를 관리해주는 기법입니다.
- GC 과정 : JVM이 어플리케이션의 실행을 잠시 멈추고 GC를 실행하는 쓰레드를 제외한 모든 쓰레드를 중단 후 사용하지 않는 메모리를 제거하고 다시 작업이 재개됩니다.
Java의 메모리 영역
- 크게 Method(메소드), Stack(스택), Heap(힙) 영역으로 구분되고 데이터 타입에 따라 할당됩니다.
- Method 영역 : 전역변수와 static변수를 저장하며, Method영역은 프로그램의 시작부터 종료까지 메모리에 남아있습니다.
- Stack 영역 : 지역변수와 매개변수 데이터 값이 저장되는 공간이며, 메소드가 호출될 때 메모리에 할당되고 종료되면 메모리가 해제됩니다. LIFO(Last In First Out) 구조를 갖고 변수에 새로운 데이터가 할당되면 이전 데이터는 지워집니다.
- Heap 영역 : new 키워드로 생성되는 객체(인스턴스), 배열 등이 Heap 영역에 저장되며, 가비지 컬렉션에 의해 메모리가 관리됩니다.
'리뷰노트 > Java' 카테고리의 다른 글
[Java]짧게 훑어보는 Java 간단 지식(오버라이딩&오버로딩, 추상클래스, 인터페이스, SOLID-객체지향의 설계원칙) (0) 2023.11.29 [JAVA] interface(인터페이스) 와 abstract class(추상클래스) (0) 2023.01.31 [Java] String Array -> int Array 로 변환하는 방법 (0) 2022.08.10