JVM:可视化 JVM 故障处理工具( 三 )
程序执行后可以看到 , 在整个 Java 堆中 , 曲线一直是平滑向上的 。
文章插图
切换到内存标签页 , 查看 Eden 后可以发现 , 整个 Eden 的图形是一个折线:
文章插图
再切换到 Gen, 可以看到整个老年代也是折叠向上的:
文章插图
我们已经在代码里加了 System.gc(), 为什么看起来没生效呢?
因为 System.gc() 是在 fillHeap() 方法中的 , 在 GC 的时候 , 还在作用域中 , 想要正常回收老年代 , 需要将 System.gc() 这段代码转移到 fillHeap() 外面 。
先修改下代码:
public static void main(String[] args) throws InterruptedException {fillHeap(1000);System.gc();// GC 后停顿 3s, 方便观察图像Thread.sleep(3000);}
文章插图
可以看到在最后进程结束的时候 ,Gen 的柱状图已经没有内存占用了 , 内存回收成功 。
3. VisualVMVisualVM(All-in-One Java Troubleshooting Tool)是功能最强大的运行监视和故障处理程序之一 , 曾经在很长一段时间内是 Oracle 官方主力发展的虚拟机故障处理工具 。
VisualVM 同样在 JDK/bin 这个目录下 , 双击 jvisualvm.exe 即可运行 。 在启动之后 , 直接在左侧会显示当前在本机运行的所有虚拟机进程 。
文章插图
VisualVM 基于 NetBeans 平台开发工具 , 所以一开始它就具备了通过插件扩展功能的能力 , 有了插件扩展支持 ,VisualVM 可以做到:
VisualVM 的插件可以在 工具->插件 中联网后直接安装 。
文章插图
文章插图
我这里只安装了两个最常用的 , 一个是 GC 监控的插件 , 还有一个可以动态插入调试程序的插件 。
我这里使用最常用的开发工具 IDEA 启动过程演示一下通过 VisualVM 监控程序 GC。
文章插图
首先我们启动 IDEA, 直到 IDEA 可以正常操作 , 看下 VisualVM 的 GC 监控 。
文章插图
- 阿里腾讯都在做的可视化大屏,我用这工具里的100个模板实现了
- 斐波那契数列:python实现和可视化
- 连环触发!MongoDB核心集群雪崩故障背后竟是……
- JVM 之java内存模型
- 基于PCA和t-SNE可视化词嵌入
- Python可视化,matplotlib最佳入门练习
- 苹果向门店提供工具 可以分清AirPods设备堵塞和故障的区别
- 面试必问之JVM
- 特斯拉|特斯拉黑屏问题未召回 前悬架连杆故障又“甩锅”中国车主
- 科技有意思|果粉:问题不大,能解决最好,iPhone12绿屏非硬件故障