
1. JIT 컴파일러(Just-In Time Compiler)란? [ JIT 컴파일러(Just-In Time Compiler)란? ] 자바 컴파일러(javac)는 자바 파일을 읽고 클래스 파일로 컴파일한다. 바이트코드는 모든 연산 코드가 단일 바이트로 표시되며 플랫폼에 종속되지 않는(portable) 명령어 집합으로 구성된다. 이들은 자바 가상 머신(JVM)에서 실행되며 실행 시점에 기계어로 번역한다. 덕분에 특정 아키텍처에 종속적되지 않지만 성능은 훨씬 떨어진다. JVM 초기에는 실행 시점에 모든 바이트코드를 직접 기계어로 해석했기 때문에 성능 문제가 있었다. 이를 위해 JDK 1.3에 HotSpot VM이 도입되어 런타임에 바이트코드를 느리게 해석하는 대신 최적화된 코드를 실행할 수 있는 JIT(Ju..

1. 유용한 개발 관련 아티클 및 영상 #11 브랜치 관리를 도와줄 gitbutler 파일들이 각각의 virtual branches에 들어가는 방식으로 브랜치가 관리됨 기존에 깃을 사용하면서 겪었던 리베이스 등의 문제를 혁신적으로 해결해준다고 함 출처: https://twitter.com/BahkChanhee/status/1763080997892198729?s=20 오픈소스 생태계의 명과암 Node.js의 오래된 웹 프레임워크인 Express.js 저장소에 대량으로 스팸 PR이 등록되는 문제가 발생했음 구독자가 486만명인 인기 유튜버가 GitHub에서 Pull Request로 기여하는 방법을 설명하면서 express.js 저장소를 대상으로 설명한게 발단이 되었음 유튜버는 Express.js를 포크해서 ..

1. 예시로 살펴보는 IntelliJ 프로파일링 결과 분석 및 성능 최적화 방법 [ 샘플 코드 작성 및 프로파일링하기 ] IntelliJ Ultimate를 사용하고 있다면, 손쉽게 프로파일링을 진행하고 결과를 확인할 수 있다. 예를 들어 다음과 같은 컨트롤러와 서비스가 있다고 하자. @RestController @RequiredArgsConstructor class BoxingController { private final BoxingService boxingService; @GetMapping("/boxing") int boxing() { int result1 = boxingService.max1(100000000L); int result2 = boxingService.max2(100000000L); ..

1. 유용한 개발 관련 아티클 및 영상 #10 Kubernetes Is Great On-premise(쿠버네티스는 온프레미스에 적합하다) 쿠버네티스는 온프레미스 데이터 센터용 도구에서 탄생했음 쿠버네티스는 Google의 Borg와 Omega의 아이디어에서 탄생함 쿠버네티스가 온프레미스에서 유용한 이유 Fault Tolerance(결함 발생 시에 다른 서버로 이전) Density(리소스 사용률 최적화) 쿠버네티스가 온프레미스에서 갖는 한계 확장 기능이 제한적(클러스터에서 최대 5000개 노드까지만 확장 가능) 쿠버네티스 API는 복잡하고 서버에 있는 것을 관리하기 위해 다른 도구(Terraform, ansinble 등)를 배워야 함 출처: https://codeengineered.com/blog/2024/..

1. Async-Profiler 소개 및 사용 방법[ Async-Profiler란? ]async-profiler는 오픈소스 프로젝트로, Safepoint bias 문제를 겪지 않는 자바 전용 저오버헤드(low-overhead) 샘플링 프로파일러이다. Safepoint란 GC 작업을 진행하면서 사용되지 않는 객체들을 식별하는데, 이때 애플리케이션이 안전한 지점으로 이동하여 GC를 진행할 수 있는 지점을 safepoint라고 한다. 그리고 Safepoint bias 문제란 간단히 요약하면 샘플링 프로파일러에 의한 분석 샘플이 특정 위치로 편향되는 문제를 의미한다. 기존의 많은 자바 샘플링 프로파일러들은 Safepoint bias 문제에 의해 정확한 분석을 해주지 못했기 때문에 상당히 아쉬운 부분이 많이 있었..