ui: introduce new flamegraph widget and use it for java heap dumps

This CL introduces a new flamgraph widget which is far superior to the
existing flamgraph implementation in many ways:
- supports filtering stacks/frames
- sources data from any arbitrary source, not use hardcoded use of
  experimental_flamgraph
- improves the UX for hover
- collapses linked lists (and other recursive data structures) down
  instead of arbitrarily truncating

This CL also starts using this widget in the Java heap graph details
panel as that was the use-case which is suffering the most right now.
For example, the runtime of a dominator tree flamegraph has been
cut from multiple minutes to 5s.

Also while I'm here, improve the heap profile track query as well to
be significantly better.

Change-Id: Ib8444b642e78e69b041adde716976c2f3822c92f
21 files changed
tree: 78e601e9f8872615d1c1082020716f653a588f83
  1. .github/
  2. bazel/
  3. build_overrides/
  4. buildtools/
  5. debian/
  6. docs/
  7. examples/
  8. gn/
  9. include/
  10. infra/
  11. protos/
  12. python/
  13. src/
  14. test/
  15. third_party/
  16. tools/
  17. ui/
  18. .bazelignore
  19. .bazelrc
  20. .clang-format
  21. .clang-tidy
  22. .git-blame-ignore-revs
  23. .gitattributes
  24. .gitignore
  25. .gn
  26. .style.yapf
  27. Android.bp
  28. Android.bp.extras
  29. BUILD
  30. BUILD.extras
  31. BUILD.gn
  32. CHANGELOG
  33. codereview.settings
  34. DIR_METADATA
  35. heapprofd.rc
  36. LICENSE
  37. meson.build
  38. METADATA
  39. MODULE.bazel
  40. MODULE_LICENSE_APACHE2
  41. OWNERS
  42. perfetto.rc
  43. PerfettoIntegrationTests.xml
  44. persistent_cfg.pbtxt
  45. PRESUBMIT.py
  46. README.chromium
  47. README.md
  48. TEST_MAPPING
  49. traced_perf.rc
  50. WATCHLISTS
  51. WORKSPACE
README.md

Perfetto - System profiling, app tracing and trace analysis

Perfetto is a production-grade open-source stack for performance instrumentation and trace analysis. It offers services and libraries and for recording system-level and app-level traces, native + java heap profiling, a library for analyzing traces using SQL and a web-based UI to visualize and explore multi-GB traces.

See https://perfetto.dev/docs or the /docs/ directory for documentation.