데이터 베이스 접근을 모니터링을 해보기모니터링 툴로는 Prometheus - Grafana으로 작동하였습니다. 1) 슬로우 쿼리(조회)로 인한 현상을 확인해보기SELECT * FROM shop_order WHERE seq_shop_order = 1 AND SLEEP(10) = 0 // QueryDsl queryFactory .select(Projections.constructor(OrderDetail.class, orderEntity.orderName, orderEntity.price, orderEntity.regId)) .from(orderEntity) .where(orderEntity.id.eq(seqOrderId) ..
Integer 128 != Integer 128 ??앞서 String Pool에서 문자열의 동일비교에 대해 공부해보았는데,이번엔 흥미로운 숫자에 대해서도 동일비교가 문제가 되는 상황이 있다. Integer a1 = 1;Integer a2 = 1;Integer a3 = 128;Integer a4 = 128;Integer a5 = 256;Integer a6 = 256;System.out.println(a1 == a2); //trueSystem.out.println(a3 == a4); //falseSystem.out.println(a5 == a6); //false 왜 이러한 상황이 나오는 것일까? 아시다시피 Integer Class는 Object객체이다. 기본형타입과는 다른 비교가 필요하다.그렇다면 a1,a2..
Garbage Collection (가비지 컬렉션) 이란?Java에서 Heap메모리영역에서 자동으로 더 이상 참조(사용)되지 않는 인스턴스(메모리 영역)들을 관리 및 청소해주고 메모리 파편화를 줄여주는 JVM 프로세스의 일부분입니다.(PS. C와 같은 일부 언어에서는 이 작업을 수동으로 관리해주어야합니다.) 어떠한 원리로 작동하는가?작동 원리는 간단합니다.1. 인스턴스 생성시 메모리를 할당합니다. (힙)2. 사용되는 메모리 영역과 사용되지 않는 메모리 영역을 식별합니다.3. 사용되지 않는 메모리를 회수하여 운영체제에 다시 전달합니다. 왜 기존 GC는 Young영역 과 Old 영역을 나누었을까? (Z GC 제외) 위는 객체 수명에 대한 분포도에 대한 그림입니다.시간이 오래될 수록 살아있는 객체들이 짧은..
Java의 String Pool 이란 ?문자열 리터럴이 저장되는 Java Heap의 영역이다.(Java 7 이전까지는 Perm영역이었으나, OOM 문제로 인해 Heap으로 이동하였습니다.String Intern Pool 혹은 String Constant Pool이라고도 불립니다.. 문자열 리터럴?Java에서 문자열을 생성하는 방식의 차이입니다.String literal = "리터럴"; --> 리터럴 생성 방식String object = new String("object"); --> 생성자 생성 방식 왜 String Pool 이 필요할까?문자열을 만들때마다 문자열 객체를 힙메모리에 매번 생성되는것을 방지하기 위해서입니다..--> 이를 위해 문자열 객체 생성시 문자열 리터럴을 사용하는 것을 추천합니다.. ..