通过Java jdk 自带的jvisualvm工具监控应用的CPU、内存、线程、等状态与消耗情况并生成Dump文件,通过Dump文件可分析出具体的堆栈信息从而定位到Java代码。
1、 首先运行PoAutomation应用,确保应用可使用,然后打开jvisualvm 工具
2、 通过本地连接上PoAutomation应用,在通过抽样器抽样内存使用情况
3、 使用PoAutomation应用中的功能,查看内存使用情况,待内存上升到峰值时点击堆Dump生成Dump文件,通过 MemoryAnalyzer工具开打并分析具体情况
4、 现在MemoryAnalyzer工具,并打开刚刚生成的Dump文件
5、 点击Leak Suspects
6、 此时显示的就是消耗内存最多的线程中信息,点击Details 可查看具体的堆栈信息,可以发现两个超大的集合以及堆栈调用顺序
7、 更具上述步骤分析可锁定PoAutomation代码
8、 将55、57行循环创建对象产生大量对象咱用内存,以及51行代码拖出循环体外,避免循环读取全量配置文件内容减少IO开销、降低内存消耗。