Skip to content

Dashboard

Java Performance Tool Part 1: VisualVM

Created by Admin

Giới thiệu VisualVM tool

VisualVm là 1 công cụ hữu ích giúp chúng ta quan sát thông tin của các ứng dụng JAVA chạy trên local hay trên các máy khác. VisualVM tích hợp rất nhiều tools: Jmap, Jstack, JConsolem, Jstat và Jinfo. Giúp chúng ta quan sát, theo dõi (monitoring):

  • Memory leaks
  • Anlyze heap data,
  • Monitor GC (garbage collector)
  • CPU profiling

Nó cũng giúp cải tiến hiệu suất ứng dụng và đảm bảo bộ nhớ được sử dụng 1 cách tối ưu. Chúng ta có thể quan sát và phân tích Thread và sử dụng Heap Dump để phân tích các object tại thời điểm, giúp chúng ta biết được trạng thái hệ thống lúc bấy giờ.

VisualVM là miễn phí

Hướng dẫn sử dụng

Cài đặt

Lên trang chủ tải về. https://visualvm.github.io/ Mình dùng bản Standalone

Download zip file về và giải nén ra để chạy file (tùy theo hệ điều hành) trong thử mục

visualvm/bin

Nếu bạn sử dụng intellij thì có sẵn 1 plugin

Sau khi cài xong thì bạn có thể thấy các button tích hợp sẵn trong VisualVM trong đó. Chúng ta có thể start VisualVM từ IDE hay bật lúc debug hay start ứng dụng.

Đây là giao diện tổng quan của ứng dụng

Các chức năng trong VisualVM

1 Tool viết ra có rất nhiều tính năng, mình sẽ đi vào những tính năng chính mình hay dùng và thấy hiệu quả, nếu các bạn thấy tính năng nào hay mà mình đã bỏ qua thì comment cho mình biết.

Applications: ở cửa sổ bên trái

Trong này chứa các ứng dụng, mình quan tâm 2 mục LocalRemote

  • Local: Là các ứng dụng chạy trên JVM ở máy local (máy chạy VisualVM).
  • Remote: Mình có thể connect đến 1 máy khác để theo dõi các ứng dụng chạy trên máy đó (Cái này hơi phức tạp và có 1 vài ưu nhuợc điểm, mình sẽ làm 1 bài chi tiết về cái này.)

Trong bài này mình tập trung vào Local và cách đọc, quan sát các tool, phân tích trạng thái Trong mục Local bạn sẽ chọn ứng dụng mà mình cần quan sát, trong ảnh của mình có 1 ứng dụng với package (com.examlple.demo)

Sau khi chọn (double click) nó sinh ra 1 tab bên phải

Overview

Có rất nhiều thông tin ở đây: PID, Host, Main class, Arguments... Các thông tin JVM agruments, System Properties

Monitor

Tab này rất hữu ích, mình sử dụng rất nhiều

Chúng ta có thể quan sát trạng thái CPU, Memory, Classes, Threads Nó là Live Monitoring , chúng ta có thể quan sát các thông số, thao tác trên ứn dụng, xem các thao tác nào ảnh hưởng đến các thông số. Thao tác gì tốn CPU, tăng RAM, tăng Thread, số lượng Classes.

Ngoài ra chúng ta có thể Dump trạng thái tại thời điểm hiện tại để quan sát thông số tại thời điểm đó

Có thể view theo Objects, có chức năng filter theo các class mình quan tâm ở cuối ảnh

Sau khi filtered

Hay Threads

Threads

Nó liệt kê cho ta thấy số lượng threads và trạng thái các thread đó theo từng màu: Running, Sleeping, Wait, Park....

Sampler

Giúp chúng ta lấy mẫu CPU hay Memory tại từng thời điểm, theo mình hiểu nó cũng giống như Heap Dump, mình không dùng cái này nhiều vì thấy các thông số mình đều có thể lấy từ Heap Dump ra.

Profiler

Cũng giống như Sampler, mình ít dùng, Nhưng thấy có cái liên quan đến JDBC, mình sẽ nghiên cứu và bổ sung thêm vào.

Kết Luận

Bài cũng khá dài rồi, mục đích chính của bài này là giúp mọi người có cái nhìn tổng quan về ứng dụng VisualVM. Trong qúa trình làm việc cụ thể với nó, mọi người sẽ hiểu rõ hơn.

Nếu cần trao đổi, thảo luận và góp ý thêm, hãy comment ở bên dưới bài viết

Tài liệu tham khảo

Source: https://viblo.asia/p/java-performance-tool-part-1-visualvm-bJzKmV0YZ9N