JAVA22 GC 모니터링(OOM 직접 내보고 확인해보자) 해당 글에 대해서 다양한 의견이나 잘못된 내용이 있으시면 댓글 남겨주시면 감사하겠습니다.개요지난 실무 개발 환경에서 페이징이 제대로 이루어지지 않아서 큰 데이터를 불러오는 과정에서 OOM(Out Of Memory)가 발생한 적이 있습니다. 그 때에도 Heap Dump을 통해서 참조가 풀리지 않은 곳을 확인해서 문제가 되는 부분을 해결하였습니다. 이 경험을 바탕으로 이론상으로만 GC가 어떻게 작업을 진행하는지 공부만 해봤을 뿐… 실질적으로 메모리가 관리되는 것을 살펴보고 싶다는 생각이 갑자기 떠올랐다. 그러면!? 아래 속담처럼 바로바로 실천해보자!쇠뿔도 단김에 빼라!!GC?⭐️ 이 글은 GC가 무엇이고, 어떤 프로세스로 동작하는지가 아닌 GC의 행위를 따라가보자는 취지로 GC의 대한 설명은 간단하게 하고 .. 2025. 8. 14. 테스트 환경? 이제는 컨테이너 안에 가둬둘 시간! - TestContainer Test 개요데이터 관련 작업을 진행하는 DB Query 관련 부분에 대해서 정확하게 동작하는지 확인이 필요합니다. 확인을 하기 위해서 테스트 코드를 작성하였을 때 “사용될 DB을 어떻게 할 것인가?”는 자연스럽게 고민하게 되는 내용입니다.선택할 수 있는 방법1. In-memory DB2. 독립적인 Test DB3. Local DB4. TestContainer 먼저 제가 생각하는 결론을 말씀드리자면, 환경에 맞게 선택해야 하지만 TestContainer를 고려하는 것을 추천합니다.In-memory DB프로세스의 Memory를 데이터 저장소로 사용하는 방법장점- 별도의 DB 연결이 필요하지 않다.- 메모리를 통해 데이터를 관리하기 때문에 실행속도가 빠르다.- 테스트를 진행할 때, Memory의 저장하기 때문에 종료.. 2025. 7. 21. BDD 패턴의 테스트 코드 작성 방식(describe-context-it, given-when-then) BDD 패턴사람은 "상태 - 행위 -결과" 기반으로 행동할 수 있다고 한다. 아래 그림처럼 고양이도 걷는 행위를 할 때에는 "상태 - 행위 - 결과"으로 표현할 수 있습니다. 사용자 또는 비즈니스 요구사항에 대한 시나리오를 행동 기반으로 자연어로 표현하는 개발과 테스트를 진행하는 방법입니다. 구체적인 시나리오에 따른 행동을 기술하고 이를 기반으로 테스트를 작성하여 사용자 행동 및 비즈니스 가치에 초점을 두고 테스트를 진행합니다. 예를 들어, 일반적인 method를 작성할 때 파라미터, 비즈니스 로직 등이 포함되어 있습니다. 해당 method가 동작하는 것이 실제 사용자 행동처럼 묘사해서 테스트 코드를 작성합니다. //DB 대신 Map으로 계좌의 금액을 관리하는 환경이라고 가정한다.// 입금하였을 때 계.. 2025. 6. 23. 나만의 클린 코드 이야기 - 편리함도 좋지만, 위험성도 알고 써보자! Lombok 해당 글은 클린 코드의 대한 자유로운 의견을 공유하고 작성된 것으로 다양한 의견이나 잘못된 내용이 있으시면 댓글 남겨주시면 감사하겠습니다.Lombok??어노테이션(@Getter, @Setter 등)을 통해 보일러 플레이트 코드가 발생하지 않도록 하여 개발자에게 편리함을 제공하고 있습니다....@Getter@Setterpublic class Person{ ...}[동작 원리] 1. 실행된 Java Source 코드를 컴파일러에서 파싱을 진행하여 AST(Abstract Syntax Tree)으로 변환합니다. 2. 생성된 AST을 Lombok Annotation Processor가 AST을 동적으로 수정을 진행합니다. 3. Lombok 의해 수정된 AST을 기반으로 분석하여 Byte Code을 생성하여 JV.. 2025. 6. 9. 나만의 클린 코드 이야기 - 비즈니스에 맞는 Collection을 만들자! 일급 컬렉션! 해당 글은 클린 코드의 대한 자유로운 의견을 공유하고 작성된 것으로 다양한 의견이나 잘못된 내용이 있으시면 댓글 남겨주시면 감사하겠습니다.상황Domain 객체의 목록을 이용하여 비즈니스 로직을 구현할 때 마주치게 됩니다. [아래와 같이 User라는 도메인을 이용해서 개발할 때 있을 때 마주칠 수 있는 코드 예시]User.classpublic class User { private final String email; private final String name; private final int age; private final String phone; // true : 여성, false : 남성 private final boolean gender ; public User(String email.. 2025. 5. 19. 나만의 클린 코드 이야기 - if-else의 갇혀버린 return 문을 구출하기 위해 Early Return 패턴을 활용하자 해당 글은 클린 코드의 대한 자유로운 의견을 공유하고 작성된 것으로 다양한 의견이나 잘못된 내용이 있으시면 댓글 남겨주시면 감사하겠습니다.What is Early Return Pattern???? Early Return Pattern을 처음 듣게 되면 디자인 패턴처럼 무언가 선뜻 다가오지 않게 느껴졌습니다. ❗️EarlyReturn함수나 메서드 내에서 특정 조건이 충족되면 즉시(early) 결과를 반환(return)하여 불필요한 코드 실행과 중첩된 조건문을 방지하는 프로그래밍 기법이다. private String method1(String input) { if (input == null) { throw new NullPointerException("input is null"); } .. 2025. 5. 7. 이전 1 2 3 4 다음