[Java] Java의 메모리 영역(Runtime Data Area)과 OOM 종류
·
Java
WAS에 올라와 있는 한 애플리케이션에서 *Heap Dump 파일(.hprof 파일)이 떨어져, 이번 포스팅을 계기로 Java의 Heap 메모리 영역에 대해 정리하고, OOM을 어떻게 해결할 수 있을 지 알아보려고 한다! *Heap Dump 파일 : Runtime 중인 애플리케이션의 힙 메모리 영역에 대한 스냅샷을 찍어 해당 내역을 저장한 파일을 일컫는다. Java에서의 메모리 영역 Java로 짜여진 프로그램이 실행되려면, JVM(Java Virtual Machine)이 OS로부터 정해진 메모리를 할당 받고, 해당 JVM 위에서 Java로 짜여진 프로그램이 실행되는 것이다. 이때, JVM에 할당된 메모리 영역(Runtime Data Area)은 용도에 따라 여러 영역으로 나누어 관리되는데, Data ty..
[Java] JVM 실행 옵션 (3) - Advanced Runtime Options
·
Java
본 포스팅은 java 8 버전 (openjdk 1.8)을 기준으로 작성한다. 이전 포스팅에 이어, 이번 포스팅에서는 Java HotSpot Virtual Machine 의 런타임 동작을 컨트롤 하는 옵션인 Advanced Runtime Options에 대해 알아보도록 하자! 들어가기에 앞서, JVM 실행 옵션 중 Advanced 옵션들은 모두 'XX'가 붙는다는 것을 알아두자! -XX:+CheckEndorsedAndExtDirs : Java 애플리케이션이 *Endorsed-Standards Override Mechanism 또는 **Extension Mechanism을 사용하는 경우, java 커맨드가 실행되지 않도록 예방할 수 있는 옵션. 이 옵션은 아래와 같은 확인 과정을 거쳐 java 애플리케이션이..
[Java] Spring 프레임워크에서의 MVC 패턴과 레이어드 아키텍처
·
Java
1. MVC 패턴이란? : 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴의 한 종류를 말하는데, Model-View-Controller의 약자이다. 이 패턴을 사용하는 궁극적인 목적은, 사용자 인터페이스(Interface)로부터 비즈니스 로직(Logic)을 분리함으로써, 애플리케이션의 시각적 요소와 그 이면에서 실행되는 비즈니스 로직 간에 영향을 최소한으로 줄여, 프로그램의 유지 보수성을 높이고, 성능을 향상시키는 데에 있다. 2. MVC 패턴의 구성 요소와 원칙 모델(Model) : 데이터와 관련된 책임을 담당하는 레이어 - [POJO] 비즈니스 로직을 수행한다. - 주로 상태 변화를 처리한다. (최근에는 Entity, VO, Aggregate로 나누어서 관리한다. -> 도메인 주도 설계) - 데..
[Java] Spring Boot에서 H2 데이터베이스 설치 및 테스트 작동 확인하기
·
Java
1. H2 데이터베이스 설치 https://www.h2database.com/html/main.html H2 Database Engine H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size Supp www.h2database.com 위 링크에서 OS에 맞는 버전을 설치하면 된다. H2를 실행하려면 H2가 설치되는 디렉토리를 ..
[Java] JVM 실행 옵션 (2) - Non-Standard Options
·
Java
본 포스팅은 java 8 버전 (openjdk 1.8) 을 기준으로 작성한다. 이전 포스팅에 이어, 이번 포스팅에서는 Java HotSpot Virtual Machine 에 특정한 범용 옵션인, Non-Standard Option 들에 대해 살펴보도록 하자! 들어가기에 앞서, Non-Standard Option 의 경우, 모든 옵션 앞에 'X'가 붙는다는 것을 알아두자! Non-Standard Options -X : 사용 가능한 모든 -X 옵션(Non-Standard Option)에 대해 도움말을 출력한다. -Xbatch : JVM은 디폴트로 백그라운드 작업으로 컴파일하고, 백그라운드 컴파일이 끝날때까지 메소드를 인터프리터 모드에서 동작하게 되는데, 이 옵션을 사용하면 백그라운드 컴파일을 Disable ..
[Java] JVM 실행 옵션 (1) - Standard Options
·
Java
본 포스팅은 java 8 버전 (openjdk 1.8) 을 기준으로 작성한다. 기본적으로 java 기반의 파일(.jar 파일, .class 파일 등)을 실행할 때 아래와 같은 명령어 형식을 사용하게 된다. java [options] {classname} [args] # ex) HelloWorld.class 파일을 실행 # java HelloWorld.class java [options] -jar {filename} [args] # -jar 옵션 : .class 가 아닌 .jar 파일을 실행할 때 사용. # ex) HelloWorld.jar 파일을 실행 # java -jar HelloWorld.jar [options] : 여러 옵션들이 입력 가능하고, 이때 공백으로 각 옵션들이 구분 되어진다. [args]..