Java

memory leak 원인 찾기 – 어플리케이션이 가지는 상태를 생각하자

이 글은 어떤 글인가요? 최근에 어떤 서비스에서 메모리 사용량이 지속적으로 증가했고 모니터링 알람으로 그 사실을 알게되었다. 이번 포스팅에서는 어떻게 memory leak 문제를 해결했는지 그 과정을 기록으로 남기고 싶어 정리해보고자 한다. 어느날 갑자기 어떤 서비스의 메모리 사용량이 높다고 알람이 왔다. 그래프 추세를 보았을 때 느낌이 좋진 않았지만 다른 일을 우선 순위를 높여 처리하고 있었기 때문에 우선… 더 보기 »memory leak 원인 찾기 – 어플리케이션이 가지는 상태를 생각하자

Reactive Streams 에 대해서

토비의 봄 영상을 통해 Reactive Streams 공부를 시작하였는데 영상 내용을 기반으로 추가적인 조사를 통해 그에 대한 내용과 궁금증을 함께 정리한 내용이다. 본격적으로 Spring WebFlux를 깊이있게 다루기 전에 가장 기본이 되는 내용에 대해서 정리하였다. 이 포스팅에서는 아래와 같은 내용을 다룬다. Iterator 패턴과 Observer 패턴의 비교를 통해서 Reactive Streams를 이해하는 기본에 대해서 다룬다. Reactive Streams이 사용되는 Reactive… 더 보기 »Reactive Streams 에 대해서

Spring Batch Scope & Testing

Spring Batch를 이용한 작업을 두 달 전쯤부터 꽤 많이 그리고 오랫동안 했었는데 배치와 관련해서 좋은 레퍼런스를 찾기 힘들었던 기억이 있다. 기본적인 것들은 쉽게 찾아볼 수 있지만 배치 테스트 케이스나 몇 가지 특수한 케이스에 대해서는 찾아보기가 어려웠다. 또한 Spring Batch 프레임워크의 도메인때문에 몇 가지 지식이 없었을 때 내가 만든 배치가 내가 기대했던대로 동작하지 않는 허다했다. 혹은… 더 보기 »Spring Batch Scope & Testing

How Java Pass Arguments

프로그래밍을 하면서 항상 method를 사용하고 거기에 관련된 arguments를 넘긴다. 그런데 어떻게 다른 method에 값들이 넘어가는지 메커니즘을 정확히 알지 못하면 가끔씩 미묘한 버그가 발생하기도 한다. 오늘 할 이야기는 Java에서 어떻게 arguments를 method로 넘기는지에 대해서다. Java를 공부해봤다면 한번 쯤 들어봤을 것 같다. 그리고 그것을 공부하면서 ‘음.. 그렇구나. 이해했으니 넘어가자’ 그러고 넘어갔다. 그리고 실제로 이해했다고 생각한 개념들에 대해서… 더 보기 »How Java Pass Arguments