Java性能调优工具VisualVM使用简记

背景

实验用 Java3d 做树木建模,其中一个重要过程是从三维点云中提取出树木骨架,这里的骨架提取算法包括且不限于八叉树降采样、k近邻提取邻居图、Dijkstra计算最短路径、提取图联通分量、k-means 聚类、目标函数最优化、三次曲线插值等过程。

用一套算法组成的 pipeline 来实现骨架提取,时间开销还是一个比较重要的评估因素的。

所以要做 Profile,一个土办法是,在几个关键方法入口和出口记录时间戳,两个时间戳一减得到这个方法的时间开销。一开始我就是这么干的:


换更高效的工具

还是换个更高效的工具吧,我发现 IntelliJ IDEA 居然默认不提供 Profiler,去搜索了一下,有人提到 VisualVM,于是下载了这个插件。后来发现这个插件本身不是 Profiler,我得去官网下载这个工具。

用法

其实,压根不需要下载 IntelliJ IDEA 的 VisualVM 插件,没什么卵用。直接下载 visualvm_141.zip,打开 ./bin/visualvm.exe。

  1. 打开后显示出了当前 JRE 下面所有在跑的 Java 应用。
  2. 运行要 Profile 的 Java 应用。
  3. 打开 Profiler 页面,先点 CPU,再点 Stop,两次点击之间就在做 Profile 了。下面的结果就出来了。

但是还是要注意一下,右边的红框框里面的类才会被 Profile。
另外就是,启动 Java 应用后,Java 应用不会留给我时间去点那个 CPU 按钮,所以我干脆在 main() 函数的第一行加了一句

new Scanner(System.in).nextLine();

这样我点击了 CPU 按钮后,再去命令行敲一下回车,程序再跑起来。这种方法也是很土的,不过还挺好用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容