본문 바로가기

java9

Heap Dump 분석 - Jmap & Eclipse Memory Analyzer(MAT) Java Application을 개발하고 운영하다 보면 메모리 누수 즉, OutOfMemoryError를 겪는 경우가 있다. 그 중에서도 힙 메모리 공간이 부족해서 생기는 에러인 java.lang.OutOfMemoryError: Java heap space이 발생했을 때 HeapDump 분석을 하는 방법에 대해서 정리한다. Heap Dump 분석 - Jmap & Eclipse Memory Analyzer(MAT) java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError 예외는 메모리 누수 상황이 발생했을 때 발생하며 그 중에서도 Java heap space 예외는 JVM 내 힙 공간이 부족하여 생기는 예외이다. 힙은 서버를 구동할 때 .. 2023. 3. 17.
자바 -Xms -Xmx 힙 메모리 설정 Jar 파일을 실행할 때 여러 옵션들을 줄수가 있는데 그 중에서도 힙메모리 관련 설정인 -Xms와 -Xmx 옵션에 대해서 정리한다. 자바 -Xms -Xmx 힙 메모리 설정 -Xms와 -Xmx -Xms와 -Xmx 옵션은 Jar 파일을 실행할 때 초기 할당 메모리와 최대 할당 메모리를 지정하는 옵션이다. 간혹 -Xms 옵션을 초기 할당 메모리가 아닌 최소 할당 메모리로 잘못 알고 있는 경우가 있는데 최소가 아닌 초기 할당 이다. 만약 다음과 같이 설정을 했다고 가정해보자. -Xms2048m -Xmx4096m 다음과 같이 옵션을 주고 jar 파일을 실행하게 되면 초기 힙 메모리 사이즈가 2048MB로 설정되고 최대는 4096MB로 설정이 된다. 테스트를 위해서 인텔리제이에서 자바 애플리케이션을 실행할 때 옵션.. 2023. 3. 14.
Spring - @ConfigurationProperties 사용방법 정리 및 @ConstructorBinding @ConfigurationProperties은 *.properties or *.yml 파일에 있는 property를 자바 클래스에 값을 가져와 사용할 수 있게 해주는 어노테이션이다. @Value를 통해서도 값을 가지고 올 수 있지만 클래스 파일로 관리할 수 있다는 점에서 차이가 있다. 스프링부트 2.2 버전 전 후로 사용방법에 차이가 있어 내용을 정리함과 동시에 @ConstructorBinding 어노테이션에 대해서도 정리한다. Spring - @ConfigurationProperties 사용방법 정리 및 @ConstructorBinding @ConfigurationProperties 스프링부트 2.2 버전 이전 사용방법 기존에는 @ConfigurationProperties 사용하기 위해서는 @Confi.. 2023. 2. 25.
코틀린 - 코드 실행 시간 측정 measureTimedValue 코드 실행 시간을 측정하기 위해서 다양한 방법이 있지만 코틀린에서 제공하는 measureTimedValue에 대해서 알아본다. 코틀린 - 코드 실행 시간 측정 measureTimedValue 코드 실행 시간을 측정하기 위해서는 아래와 같이 코드를 짜도 무방하지만 코틀린에서는 좀 더 간편하게 시간을 측정할 수 있도록 함수를 제공한다. val startTime = getCurrentTime() // do something val endTime = getCurrentTime() println("elapsedTime : ${endTime - startTime}") measureTimedValue() 함수를 이용하면 간편하게 코드 시간 측정이 가능하다. 먼저 아래 두가지를 import 해준다. import kot.. 2022. 11. 8.
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (12) 스프링 데이터 JPA 자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (12) 스프링 데이터 JPA 12.1 스프링 데이터 JPA 소개 스프링 데이터 JPA는 스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 기본적인 CRUD 개발 완료할 수 있음 리포지토리 인터페이스의 구현체는 애플리케이션 실행 시점에 스프링 데이터 JPA가 생성해서 주입해준다. 12.1.1 스프링 데이터 프로젝트 스프링 데이터 프로젝트는 JPA, 몽고 디비, 레디스, 하둡 등과 같은 다양한 데이터 저장소에 대한 접근을 추상화해서 개발자 편의를 제공하고 지루하게 반복하는 데이터 접근 코드를 줄여준다. 스프링 데이터 JPA 프로젝트는 JPA에 특화된 기능을 .. 2022. 11. 6.
Java - JAR 파일이란? WAR EAR 자바로 개발을 하게 되면 JAR와 WAR 파일을 봤을 것이다. 각각의 정의를 알아보고 추가적으로 EAR의 정의도 정리한다. Java - JAR 파일이란? WAR EAR Jar 파일이란? Jar 파일이란 Java Archive Files 의 약자로 일종의 자바 프로젝트 압출 파일을 의미한다. Jar 파일 안에는 여러개의 자바 클래스 파일들과 해당 클래스들이 이용하는 관련 리소스 등의 메타데이터를 하나의 파일로 모아서 배포하기 위한 소프트웨어 패키지 파일 모맷이다. 이렇게 하나의 파일로 압축되어 있으면 여러 파일들을 따로 받는 것이 아니기에 편리하고 시간도 절약된다. 실행을 하기위해서는 JDK에 포함되어 있는 jar 명령어를 이용해서 실행이 가능하다. 추가적으로 zip 파일 압축 알고리즘을 기반으로 만들어져.. 2022. 10. 28.