항상 이론적인 공부를 하다보면 JVM, 메모리 릭 등을 고려해서 코드를 구현해야한다는 말을 많이 들었다. 하지만 아직 신입인 나는 이론만 두리뭉실하게 알뿐. 어떻게 메모리를 관리하며 '아 이부분은 메모리 릭이 있을수 있구나' 라는 부분을 모르고 코드를 구현했다. 그러던 중, 이번에 신입 프로젝트 구현 중에 Aws s3에 있는 .gz에 있는 파일을 읽어와서 통계를 내는 부분이 있었고 이 부분을 읽어오는 중에 메모리 릭이 일어날 수 있다는 것을 알았다. 한달 전, 그 당시에는 visualVM을 몰랐고 조언을 들으면서 꾸역꾸역 작동하는 코드를 구현했지만 현재 지금 visualVM을 아는 나는 과연 잘작동하는지 visualVM을 통해서 알아보려한다.
Intellij 상단에 Setting에 들어가서 plugin을 검색하고 visualVM Launcher를 다운받는다. 만약, 없다면 구글에 무료 오픈소스 visaulVM 을 다운 받고 다시 한번 확인하자. 또한, 필터를 한번 보자. 다운로드가 완료가 되면
인텔리제이 상단 오른쪽에 이러한 이모티콘 두개가 생기고 실행을 시키면 visualVM의 창이 뜨며 실행이 된다.
우선은 visualVM은 JVM을 실시간으로 모니터링 할 수 있는 오픈소스 기반 GUI이다.
그리고 여러개의 VM을 모니터링할 수 있다는 장점이 있다.
실시간으로 현재 CPU를 얼마나 사용하는가. 전체 Heap Size에서 얼마만큼 사용하는가를 모니터링해준다.
왼쪽 Tap 부분에서 VisualVM의 오른쪽 마우스를 클릭하면 Dump를 추출할 수 있다.Bottleneck 분석등에 유용하다고 한다.
왼쪽 Tap 부분에 Heap Dump 추출이 있기도 하지만 모니터링하는 메인화면에도 쉽게 찾을 수 있다. ( 바로 옆에 버튼은 GC를 실행시키는 버튼 )
CPU, Memory 소비가 많은 부분을 쉽게 알 수 있다.
글을 쓰며 공부해나가고 좀 더 익숙해지길 원했는데... 너무 큰산이었나. 뭐가 뭔지 아직도 모르겠고 확신이 없다. 좀 더 실무적으로 경험이 쌓이다보면 하나 하나 알게 되면서 visualVM을 좀 더 유용하게 사용할 수 있을 것같다. 지금 이시점에는 '이런게 있구나' 하는 정도로 만족한다. 잘하는 개발자는 얼마나 많은 경험과 공부를 했을까. 그분들도 지금 나와 같은 시절이 있었기에 지금의 그분들이 있는 것이라 생각한다. 빨리, 많이 한다고 좋은게 아니다. 습관처럼. 천천히. 꾸준히. 이제껏 내가 해왔던 것 처럼. 하면 될것이라 생각한다.