Biểu đồ hình ngọn lửa
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Thẻ biểu đồ hình ngọn lửa cung cấp biểu đồ lệnh gọi suy ngược để tổng hợp các ngăn xếp lệnh gọi giống nhau. Tức là các phương thức hoặc hàm giống nhau có cùng trình tự phương thức gọi, được thu thập và thể hiện dưới dạng một thanh dài trong biểu đồ ngọn lửa (thay vì hiển thị dưới dạng nhiều thanh ngắn hơn, như minh hoạ trong biểu đồ lệnh gọi). Điều này giúp bạn dễ dàng nhận biết phương thức hoặc hàm nào đang tiêu thụ nhiều thời gian nhất. Tuy nhiên, điều này cũng có nghĩa là trục hoành trên biểu đồ không biểu thị tiến trình; thay vào đó, nó cho biết thời gian tương đối mà mỗi phương thức hoặc hàm cần để thực thi.
Để giúp minh hoạ khái niệm này, hãy xem xét biểu đồ lệnh gọi trong Hình 1. Xin lưu ý rằng phương thức D thực hiện nhiều lệnh gọi đến phương thức B (B1, B2 và B3) và một số trong số các lệnh gọi đến B đó sẽ thực hiện lệnh gọi đến phương thức C (C1 và C3).
Hình 1. Biểu đồ lệnh gọi với nhiều lệnh gọi phương thức cùng chia sẻ một trình tự phương thức gọi chung.
Vì B1, B2 và B3 có cùng một trình tự phương thức gọi (A → D → B) nên các phương thức này được gộp chung lại, như trong Hình 2. Tương tự, hệ thống gộp C1 và C3 vì chúng có cùng trình tự phương thức gọi (A → D → B → C); lưu ý rằng phương thức C2 không được gộp chung lại bởi trình tự phương thức gọi có sự khác biệt (A → D → C).
Hình 2. Tổng hợp các phương thức giống nhau có chung một ngăn xếp lệnh gọi.
Các lệnh gọi tổng hợp được dùng để tạo biểu đồ hình ngọn lửa, như trong Hình 3.
Lưu ý rằng đối với bất kỳ lệnh gọi xác định nào trong biểu đồ ngọn lửa, các lệnh gọi chiếm dụng nhiều thời gian CPU nhất sẽ biểu diễn trước.
Hình 3. Hình 5 minh hoạ cho biểu đồ hình ngọn lửa biểu diễn Biểu đồ lệnh gọi.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# Flame chart\n\nThe **Flame Chart** tab provides an inverted call chart that aggregates\nidentical call stacks. That is, identical methods or functions that share the\nsame sequence of callers are collected and represented as one longer bar in a\nflame chart (rather than displaying them as multiple shorter bars, as shown in a\ncall chart). This makes it easier to see which methods or functions consume the\nmost time. However, this also means that the horizontal axis doesn't represent a\ntimeline; instead, it indicates the relative amount of time each method or\nfunction takes to execute.\n\nTo help illustrate this concept, consider the call chart in Figure 1. Note\nthat method D makes multiple calls to B (B~1~, B~2~, and\nB~3~), and some of those calls to B make a call to C (C~1~ and\nC~3~).\n\n\n**Figure 1.** A call chart with multiple method calls\nthat share a common sequence of callers.\n\n\u003cbr /\u003e\n\nBecause B~1~, B~2~, and B~3~ share the same sequence\nof callers (A → D → B) they are aggregated, as shown in Figure 2. Similarly,\nC~1~ and C~3~ are aggregated because they share the same\nsequence of callers (A → D → B → C); note that C~2~ is not included\nbecause it has a different sequence of callers (A → D → C).\n\n\n**Figure 2.** Aggregating identical methods that share\nthe same call stack.\n\n\u003cbr /\u003e\n\nThe aggregated calls are used to create the flame chart, as shown in Figure 3.\nNote that, for any given call in a flame chart, the callees that consume the\nmost CPU time appear first.\n\n\n**Figure 3.** A flame chart representation of the call\nchart shown in figure 5.\n\n\u003cbr /\u003e"]]