지난 글에서는 JVM
의 구성 요소 중 .class
파일을 읽어 메모리의 메서드(Method)
영역에 로드하는 클래스 로더에 대해 알아봤다. 사실 클래스 로더에서 다룬 글에서 이미 오늘 다룰 메모리에 관한 내용이 포함되어 있었는데, 이번 글에서는 JVM
메모리에 대해 보다 자세히 다룰 예정이다.
실행 파일 형태의 프로그램이 실행 중 상태에 있을 때 우리는 이를 프로세스(Process)
라 부른다. 이를 또 메모리 관점에서 설명하면 메인 메모리(RAM)에 프로세스가 올라가있는 상태로도 설명할 수 있다.
[ 그림 1 ] 는 프로세스가 메모리에서 어떻게 관리되는지를 보여준다. 여기서 말하고 싶은 핵심은 프로그램이 실행될 때 메모리에서 해당 프로세스를 관리하기 위해 여러 정보들이 올라가 있다는 점이다.
자바로 작성된 프로그램은 어떻게 실행될까? JVM
을 중심으로 앞 질문에 대한 답을 알아가보자.
JVM(Java Virtual Machine)
는 자바로 작성된 프로그램이 돌아가도록 하는 프로그램이다. 개발자가 이해할 수 있는 수준의 .java
파일을 컴파일 하면 .class
가 생성되는데, 컴파일 이후부터는 이를 바이트 코드라고 한다. 이 바이트 코드는 JVM 위에서 동작한다.
이전 글에서 Index 자료 구조 중 하나인 B+Tree 를 다뤘다. 이번 글에서는 B+Tree 기반의 Index 가 가지는 특징과 사용 시 고려할 점들에 대해서 다룰 예정이다.
insert, update, delete (Command)의 성능을 희생하고 대신 select (Query)의 성능을 향상시킵니다.
이전 글에서 Index 사용 배경, Index 자료 구조 중 하나인 Hash Table 을 다뤘다. 이번 글에서는 또 다른 자료 구조 중 하나인 B+Tree 를 다룰 예정이다.
B-Tree 는 데이터베이스의 인덱싱 알고리즘 가운데 가장 일반적으로 사용되고, 가장 먼저 도입된 알고리즘이다. 하지만 아직도 가장 범용적인 목적으로 사용되는 인덱스 알고리즘이다. B-Tree 에는 여러 가지 변형된 형태의 알고리즘이 있는데, 일반적으로 DBMS 에서는 주로 B+Tree 또는 B*Tree 가 사용된다.
본론 내용을 이해하기 위해서는 먼저 B-Tree 와 B+Tree 의 차이에 대해 이해하고 있어야 하는데, 해당 내용은 여기 에서 확인할 수 있다. B+Tree 가 B-Tree 와 다른 점은 아래 두 가지로 정리할 수 있다.
① 루트 노드를 포함한 내부 노드는 데이터를 저장하지 않는다.