jvm 3

JVM 클래스 로드

클래스 로더란?클래스 로더는 컴파일 된 자바의 class 파일을 동적으로 로드하고 JVM 내 Runtime Data Area에 배치하는 작업을 수행한다.클래스 로더에서 class 파일을 로딩하는 순서는 아래 세단계로 이루어진다.Loading : 클래스 파일을 가져와서 메모리에 로드Linking : 검증Initialization : 변수 초기화이때 로딩 기능은 한번에 메모리에 올리는 것이 아니라 어플리케이션 내에 필요한 경우에 동적으로 메모리에 적재한다.우리는 클래스나 클래스 내의 static 멤버들은 실행과 동시에 메모리에 올라간다고 착각하기 쉽다.하지만 생각해보면 언제 사용할지도 모르는데 모두 올리는 건 비효율적이라는 것을 알 수 있다.결과적으로 JVM은 모든 클래스를 메모리에 올리는 것이 아니라 클래..

개발/java 2024.08.27

[JAVA]JVM

JVM과 자바 어플리케이션 JVM은 자바 프로그램을 실행하기 위한 소프트웨어이다. 다시 말해 결국 JVM도 일종의 프로그램이다. 그렇기 때문에 자바 어플리케이션을 실행 시키면 우선 JVM이 OS로부터 메모리를 할당을 받는다. 이후 .java 파일의 소스 코드를 컴파일 하여 나오는 바이트 코드를 해석하고 실행하는 역할을 한다. public class Main { public static void main(String[] args) { Audio audio = new Audio(); } } class Audio { final static String color = "WHITE"; int volume; void volumeUp() { this.volume += 1; } void volumeDown() { th..

개발/java 2023.07.06

[JAVA]JVM, JRE, JDK

JVM(Java Virtual Machine) JVM은 일종의 프로그램이다. 우선 JAVA와 C와 같은 언어들은 컴퓨터가 알아들을 수 있도록 소스 코드를 컴파일 하여 기계여로 변환하는 과정을 거친다. 하지만 c나 c++ 등의 언어들은 각 OS에 맞는 컴파일러가 없다면 윈도우에서 개발한 프로그램이 다른 OS에서는 동작하지 않는다. 하지만 JAVA는 "Write once, Run anywhere"라는 모토를 가지고 있다. 말 그대로 한 번 작성되면 다른 운영체제에서도 동일하게 실행 될 수 있다는 의미이다. 이를 가능하게 하는 것이 JVM이다. 각 OS 별로 JVM이라는 통역사를 둔다고 생각하면 이해하기 편하다. JAVA는 컴파일러((javac)가 컴파일시에 작성된 코드(.java 파일)를 바로 기계어로 변환..

개발/java 2023.07.03