Developing Myself Everyday
article thumbnail
JVM과 커널의 동작
Android/Java 2023. 6. 26. 15:31

🏴 커널이란? 운영체제에 공부를 하다보면 커널이라는 것을 접하게 된다 커널을 간단하게 설명하자면 운영체제의 메모리에 상주해 있는 프로그램이라고 할 수 있다. 커널은 응응 프로그램들이 자원에 접근할 때 사용되는데, 이 때 위의 그림과 같은 과정을 거치게 된다. 쉘이란 이런 프로그램들이 메모리에 로딩되고 언제 메모리에서 해제되는지 관리해주는 프로그램이다. 다만 쉘이 직접 메모리에 관여한다면 여러 프로그램들이 꼬이게 되어 엉뚱한 곳에 데이터를 읽거나 쓰는 상황이 발생할 수 있다. 그래서 쉘은 I/O를 할 때 커널에게 요청을 하고 커널은 이를 받아드려 해당하는 I/O를 대신 진행해준다. 이런 요청을 System Call (시스템 콜)이라고 한다. 이 때 사용되는 것이 위의 그램에 존재하는 mode bit 이다...

article thumbnail
Reflection (리플렉션)
Android/Java 2023. 6. 11. 10:16

리플렉션이란? 리플렉션은 자바의 기능 중 하나로, Runtime(실행 중)에 클래스의 정보를 동적으로 검사하고 조작할 수 있도록 한다. 리플렉션을 사용하면 클래스의 메서드, 필드, 생성자 등에 접근하고 호출할 수 있다. 리플렉션에 대해 이해하기 위해서는 JVM의 작동방식에 대해 이해할 필요가 있다. JVM은 클래스 로드시 Class Loader(클래스 로더)를 사용해 클래스에 대한 정보들을 저장한다. 이 때, 리플렉션에 사용되는 MetaData(메타데이터)를 Native Memory의 Metaspace(메타스페이스)에 저장한다. 리플렉션을 호출하는 시점에는 이미 해당 클래스의 로딩과 메타데이터 저장이 완료된 상태일 수 있다. 정리하자면 리플렉션은 로딩된 클래스의 메타데이터를 활용하여 클래스의 정보를 동적..

article thumbnail
JVM의 내부 구조와 작동
Android/Java 2023. 6. 10. 15:15

자바의 프로세스는 JVM에서 실행되는 독립적인 실행 프로그램이다. 자바 프로세스는 운영 체제에서 실행되기 위해 자원을 할당받고, 메모리 공간을 사용하며, 시스템 자원을 활용하여 작업을 수행한다. 자바 프로세스는 JVM을 통해 자바 언어로 작성된 소스 코드를 바이트 코드로 변화하고, 해당 바이트 코드를 실행해 프로그램을 동작시킨다. 이제부터 JVM에 대해 자세히 알아보겠다. 만약 JVM이 뭔지를 모른다면 아래의 게시글을 읽고 돌아오길 바란다. JVM & JRE & JDK 자바를 공부해본 사람이라면 자바는 플랫폼에 독립적이고, WORA("Write Once Run Anywhere" - 한 번 작성하면 모든 곳에서 돌릴 수 있다)는 말을 들어봤을 것이다. public class Main { public sta..

article thumbnail
JVM & JRE & JDK
Android/Java 2023. 5. 29. 11:05

자바를 공부해본 사람이라면 자바는 플랫폼에 독립적이고, WORA("Write Once Run Anywhere" - 한 번 작성하면 모든 곳에서 돌릴 수 있다)는 말을 들어봤을 것이다. public class Main { public static void main(String[] args) { for (int i = 1; i < 10; i++) { System.out.println("%d ", i); } } } 우리가 위와 같이 자바로 코드를 작성하면 컴퓨터는 이 내용을 바로 이해하지 못한다. 그래서 우리는 우리가 작성한 코드를 컴퓨터가 이해할 수 있게 바꿔주는 과정이 필요하다. 이걸 코드를 번역(Compile) 한다고 한다. 작성한 언어를 번역하느냐, 혹은 통역(Interpret) 하느냐에 따라 나뉠 수..