언어

JVM이 무엇인가?
이번 포스팅은 JVM이 무엇인지 어떻게 등장하게 되었는지 얘기해볼 것입니다. JAVA의 큰 장점 중 "운영체제에 독립적"이라는 점이 있습니다. 이것은 JVM의 역할로 인해 지니게된 장점입니다. JVM(Java Virtual Machine, 자바 가상 머신)은 무엇일까요? JVM이 무엇인지 얘기하기 전에 왜 나오게 됐는지 생각해보고자 합니다. 1. 기계어 현재와 달리 먼 과거로 돌아가서 "컴퓨터"와 처음 의사소통을 할 수 있었던 시절에는 지금처럼 소스코드로 컴퓨터에게 연산을 맡기는게 아닌, 개발자들이 직접 (컴퓨터가 알아먹을 수 있는) 0과 1을 이용해서 나름의 규칙을 통해 명령을 만들었습니다. 만약 1+3 수식 연산을 처리하도록 명령한다면, 2진법을 이용해서 01010101 00000001 0000100..

🌼 Connection Pool
👋 어쩌다 등장했나?일반적인 데이터 연동과정은 웹 애플리케이션이 필요할 때마다 데이터베이스에 연결하여 작업하는 방식입니다.더보기일반적인 데이터베이스 연결 Life Cycle아래 단계만 봐도 데이터베이스 연결은 상당한 비용이 소모되는 작업임을 알 수 있습니다.데이터베이스 드라이버를 로드한 후 데이터베이스로의 연결 객체를 생성하여 open데이터 조회/생성을 위해 TCP Socket open소켓을 통해 데이터를 읽고 쓴다.연결 close소켓 close아래 내용은 INSERT문을 수행하는 과정에서 필요한 비용의 비율을 나타냅니다. (MySQL 8.0 기준) : 참고 링크Connecting: (3)Sending query to server: (2)Parsing query: (2)Inserting row: (1..

익명 클래스(익명 객체)
이번 포스팅에서는 익명 클래스/객체에 대해 알아볼 것입니다. 목차는 아래와 같습니다. 목차 익명 클래스/객체의 정의와 사용하는 이유 익명 클래스/객체를 어떻게 사용하는가? 익명 클래스/객체를 사용하는 두가지 상황(Interface 구현, 추상 클래스 상속)과 주의 사항 일회성으로 사용되는 기능을 '일반클래스의 인스턴스로 생성한 것' => '익명 클래스/객체로 변환'하는 예제 익명 클래스/객체? 익명 클래스는 내부 클래스이자 이름이 없는 "익명" 클래스입니다. 즉, 이름이 없는 일회용 클래스로 클래스 정의와 인스턴스(객체) 생성을 동시에 할 수 있습니다. 익명 클래스(익명 객체)는 인터페이스를 구현하는 클래스 혹은 부모 클래스를 상속받는 클래스 중 일회성에 그치는 클래스를 이름이 없는 클래스로 생성하고 동..

JVM(Java Virtual Machine)의 구조 - 메모리
JVM은 클래스 로더 시스템, 메모리, 실행 엔진, 네이티브 메소드 인터페이스(JNI)+네이티브 메소드 라이브러리, 총 4개로 구성되어 있습니다. 한번에 다루기 많은 내용이라 나눠서 포스팅할 예정입니다. 메모리 (현재 포스팅) 클래스 로더 시스템과 실행 엔진 이번 포스팅은 '메모리'에 대해 다루겠습니다. Runtime Data 영역에는 메서드(Method 혹은 Class) 영역(Area), 스택(Stack) 영역, 힙(Heap) 영역, 네이티브 메서드(Native Method ) 스택 영역으로 구성됩니다. 1️⃣ 메서드(클래스) 영역 클래스가 메모리 상에 올라가는 영역입니다. JVM이 동작하고 클래스가 로드될 때 적재되서 프로그램이 종료될 때까지 저장됩니다. 구성 클래스 구조 FQCN(클래스 이름(풀패키..

Stack과 Heap.. 그리고 Garbage Collection
JVM의 구조는 클래스로더, 메모리 영역(Runtime Data Area), 실행 엔진, 가비지 컬렉션, 네이티브 메소드 인터페이스(JNI)+네이티브 메소드 라이브러리 로 구성되어있습니다. 그리고 Runtime Data Area 에는 Method Area, Heap, PC Registers, Stack, Native Method Stack 로 구성되어있습니다. (참고) 간단히, 스택과 힙 스택 컴파일 타임에 할당되는 메모리 영역입니다. 원시 타입의 데이터가 값과 함께 할당되고, Heap 영역에 생성된 Object 타입 데이터의 참조 변수(주소값)가 할당됩니다. 프로세스가 메모리에 로드 될 때 스택 사이즈가 고정되어 있어, 런타임 시에 스택 사이즈를 바꿀 수는 없습니다. 힙 런타임에 할당되는 메모리 영역입..

JDK, JVM, JRE
세 용어는 자주 쓰이지만 그만큼 명확히 이해하지 못한 개념에 대해서 정리해놓으려 합니다. 워밍업 자바로 프로그래밍을 하려면 먼저 JDK를 설치해야합니다. JDK를 설치하면, 자바가상머신(JVM)과 자바 클래스 라이브러리(JRE)+ 자바를 개발하는데 필요한 실행파일들(JDK)이 설치됩니다. 쉽게 말해, JDK : JRE + 개발에 필요한 실행파일(javac.exe 등) JRE : JVM + 클래스 라이브러리 + 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일 JVM : 자바 가상 머신 더보기 bin 디렉터리의 주요 파일 1) javac.exe : 자바 컴파일러.자바 소스코드를 바이트 코드로 컴파일 합니다. 명령어 : (경로)\javac Hello.java 2) java.exe : 자바 인터프리..