분류 전체보기4 실행 엔진 1. Interpreter- 실행되는 바이트 코드를 한줄 한줄 해석한 후 실행시키는 일을 합니다. 2. JIT CompilerInterpreter로만 application이 실행된다고 생각했을 때 성능적으로 문제가 있다 위에 짧게나마 Interpreter의 설명을 했는데 실행되는 코드들을 Run-time 환경에서 기계어로 변환하고 변환한 기계어를 실행시킨다고 했을때 다른 컴파일 언어들과 비교했을 때 성능적으로 차이가 .. 2024. 4. 23. JVM 메모리 구조 지난 글에서 JVM의 ClassLoader에 대해서 소개했습니다. ClassLoader가 바이트 코드를 읽어와서 데이터를 메모리에 적재하는 흐름으로 이어져서 오늘은 JVM 동작 흐름상의 JVM의 메모리 구조에 대해서 알아보도록 하겠습니다. JVM 메모리 자체만으로도 공부하면 공부량이 너무 많고 이 글에서 그걸 다 적다 보면 본래 의도(JVM의 동작과정)와 다르게 메모리의 구조 자체에 포커스가 될거 같아서 간단하게 흐름에 필요한 만큼만 설명을 드리도록 하겠습니다. JVM에서 메모리의 구성은 PC Register, Stack, Native Method Stack, Heap, Method Area 크게 5가지로 구분 할 수 있습니다. 위 그림을 보면 PC Register, Stack, Native Method.. 2024. 3. 13. Class Loader 지난 글에서는 JVM에서 코드가 실행되는 흐름에 대해서 간략하게 알아봤습니다. 이 글에서는 그 과정에서 실행하는 바이트 코드를 읽고 메모리에 올리는 일을 하는 Class Loader에 대해서 자세히 알아보도록 하겠습니다. Class Loader 구조 Class Loader에는 Loading, Linking, Initialization이 있습니다. 각각의 동작 과정과 역할을 살펴보도록 하겠습니다. 1. Loading Java Application은 동적 로딩입니다(Lazy Loading) 이게 무슨 말 이냐면 Java Application이 실행할때 모든 소스코드를 읽어 놓고 사용하는 것이 아니라 특정 기능을 실행 할 때, 실행에 필요한 데이터를 바이트 코드(.class)에서 읽어와서 사용하는 방식으로 동.. 2024. 3. 13. JVM 동작의 흐름 이번 글에서는 간단하게 JVM이 무엇이고 어떻게 동작하는지 흐름만 체크할 수 있도록 글을 구성해보겠습니다. 전체적인 흐름을 이해하고 세부적으로 어떻게 동작하는지 체크해보면 이해도 더 잘되고 기억에 잘 남을거 같아서 이 글에서는 간단하게 흐름 위주로 작성했기에 가볍게 봐주시고 흐름을 익히시면 좋을 거 같습니다. JVM이란? - Java 바이트 코드로 컴파일 된 프로그램을 어떤 OS에서도 실행할 수 있게 해주는 가상 머신입니다. 즉 java 외에 Kotlin, Scala등 Java 바이트코드로 컴파일로 컴파일된 언어들도 JVM에서 실행이 가능하고 Window, Linux등 OS에 영향을 받지않고 어떤 환경에서도 실행이 가능해주도록 해주는 소프트웨어입니다. 코드가 실행되는 흐름 기본적인 흐름은 이렇습니다. J.. 2024. 3. 8. 이전 1 다음