데이터를 처리하다 보면 너무 자주 나오는 데이터 타입 중에 하나가 String이다. 너무나도 익숙하지만, 제대로 사용하지 못하면 치명적인 성능저하로 이어지기 쉽다. 이번 장에서는 String을 쓰면 안 되는 이유와 써야 한다면 어떻게 써야 하는지를 본다. String을 사용하면 어떻게 되나?String 객체는 불변 객체로 String 타입의 변수에 저장된 값은 String 타입의 데이터를 가리키는 주소이고, 실제 데이터는 별도로 존재한다. 그리고 새로운 데이터를 넣을 시 기존에 데이터가 수정되는 것이 아닌, 새로운 String 객체를 생성해서 처리하게 된다. 위 String 정의에 따르면 아래의 코드를 실행 했을 때 1000개의 String 객체를 메모리에 적재가 되고, 불필요한 객체에 대해서 GC가 처..
시스템의 성능이 느릴 때 가장 먼저 병목 지점을 파악해야 한다. 그러기 위해서 사용해야 하는 것이 툴이다. 책에서 언급된 자바 환경을 위한 툴은 프로파일링, APM이 대표적이라고 한다. 프로파일링 툴프로파일링 툴은 이해하기 편하게 말하면 성능측정 도구라고 할 수 있다. 운영 서버를 진단 및 모니터링하기 위해서 사용한다. 많이 사용하는 툴로는 APM(Application Performance Monitoring)이 있다. 국산 APM에는 미소 정보사의 WebTune, 케이와이즈사의 Pharos, 외국산은 CA Wily의 Introscope, Compuware의 dynaTrace 등이 있다. 구분특징프로파일링 툴- 소스 레벨의 분석을 위한 툴- 애플리케이션의 세부 응답 시간까지 분석 가능- 메모리 사용량을 ..
자바성능튜닝에서 알려주는 J2EE 디자인 패턴의 내용이다. 이 그림은 사용자의 요청이 처리되는 순서로 생각하면서 위에서부터 아래로 보면 된다.상단은 프레젠테이션 티어. 중간은 비즈니스 티어. 하단은 인테그레이션 티어라고 보면 된다. 각 패턴의 특징Intercepting Filter 패턴 : 요청 타입에 따라 다른 처리를 하기 위한 패턴.Front Controller 패턴 : 요청 전후에 처리하기 위한 컨트롤러를 지정하는 패턴.View Helper 패턴 : 프레젠테이션 로직과 상관 없는 비즈니스 로직을 헬퍼로 지정하는 패턴.Composite View 패턴 : 최소 단위의 하위 컴포넌트를 분리하여 화면을 구성하는 패턴.Service to Worker 패턴 : Front Controller와 View Hel..
알게된 계기개인 프로젝트를 진행하면서 로그인을 어떤 식으로 구현하면 좋을지 계속해서 고민 중이었다. 내가 고려하고 있던 것은 spring security 프레임워크를 활용한 JWT 방식의 로그인과 OAuth2 방식의 소셜 로그인이다. 개발시간을 단축시키고자 자체 회원가입과 로그인은 제외하고, OAuth2 방식을 선택하려고 하였으나 OAuth2 방식의 이중통신이 마음에 들지 않았다. https://youtu.be/-2Gm_JKK7yo?si=1bumSN1IMTyUwPUc그러다 우연히 메타코딩님의 아래 유튜브 영상으로 이 글의 주제인 OIDC를 알게 되었다. 솔직히 방금 영상을 다 보고, OIDC 방식이 마음에 들어서 기록하고자 블로그를 켰다. 평소에는 노션에 남기는데, 이 주제는 블로그에 기록으로 남겨두고 ..
GC 로깅 + Eclipse MATGC 로그로 메모리 누수 의심 구간을 식별.힙 덤프를 Eclipse MAT로 분석하여 누수 원인을 확인. JVisualVM초기 분석 단계에서 간단하고 빠르게 메모리 사용량 및 누수 여부 확인. APM 도구프로덕션 환경에서 실시간 메모리 이상 패턴 모니터링. SpotBugs 또는 SonarQube코드에서 잠재적인 메모리 누수 원인을 사전에 방지. 아직 메모리누수를 어떻게 처리하는지, 왜 발생하는지 등에 대해서도 알지 못한다. 그래서 발생원인부터 해결방법까지 알아보려고 한다.