You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Java无限循环银行自动化程序内存泄漏原因及排查咨询

NetBeans Profiler完全能帮你定位内存泄漏问题

直接给你实操步骤和针对性排查方向:

一、用NetBeans Profiler排查的具体流程

  • 启动NetBeans加载你的项目,点击工具栏的Profile按钮,选择「Profile Project」,在配置窗口里勾选Memory Profiling模式。
  • 开启内存分配记录:在配置界面勾选「Record object allocations and garbage collections」,确保能追踪对象的创建与回收全链路。
  • 运行程序复现场景:完成银行登录流程,触发baslaActionPerformed里的轮询线程,让程序运行1-2小时(不用等崩溃,只要内存有持续上升趋势就行)。
  • 捕获内存快照:每隔一段时间(比如30分钟)点击Profiler界面的Take Snapshot,保存当前内存状态。
  • 分析快照定位泄漏:
    1. 看Dominators视图:找出占用内存最高且未被GC回收的对象类型——比如Selenium WebDriver相关实例、Google Sheets API的请求/响应对象、轮询中生成的支付记录对象。
    2. 查Allocation Call Tree:定位到持续创建对象但未回收的方法,重点看baslaActionPerformed里的轮询逻辑,是不是每次循环都新生成了未复用的实例。
    3. 对比多份快照:观察哪些对象的数量在持续增长,这类对象就是泄漏的核心嫌疑。

二、结合你的业务场景的重点排查点

  • Chrome/WebDriver相关:你打开了3个Chrome标签,大概率用了Selenium。要检查每次轮询后有没有清理WebElement引用、有没有复用WebDriver实例?会不会是轮询中重复创建了驱动相关对象但未销毁?
  • Google Sheets操作:写入Sheet时是不是每次都新建了SheetsService或请求实例,没有复用?请求的响应对象有没有被正确释放?
  • 轮询线程的循环逻辑:无限循环里是不是每次都创建了新的集合、字符串等对象,且被全局静态变量/持久引用持有,导致GC无法回收?

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:25:03