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

如何在不新增业务无关程序的前提下主动触发Java应用的OutOfMemoryError?

无需额外程序触发OutOfMemoryError的方案

针对Tomcat Web应用

利用JDK自带的jcmd工具(无需添加任何应用内代码或额外程序),步骤如下:

  1. 获取Web应用的JVM进程ID:
    jps | grep Bootstrap  # Tomcat的主进程通常为Bootstrap
    
  2. 执行内置脚本触发内存耗尽:
    jcmd <你的Tomcat进程PID> VM.run_script -language javascript -script <(echo "var leakList = new java.util.ArrayList(); while(true) { leakList.add(new byte[1024*1024]); }")
    
    这段脚本会在目标JVM中持续创建1MB字节数组并持有引用,直到触发OutOfMemoryError。

针对RHEL上的批处理应用

同样使用JDK自带工具操作:

  1. 获取批处理应用的JVM进程ID:
    jps | grep <你的批处理主类名>
    # 或用ps命令:ps aux | grep java | grep <应用标识>
    
  2. 执行内存耗尽脚本:
    jcmd <批处理进程PID> VM.run_script -language javascript -script <(echo "var leakList = new java.util.ArrayList(); while(true) { leakList.add(new byte[1024*1024]); }")
    

关键说明

  • 所有工具(jcmd、jps)均为JDK自带组件,不属于“与业务无关的额外程序”,符合项目规则。
  • 无需修改任何JVM参数(如-Xmx/-Xms),完全基于应用原有配置触发OOM,满足测试要求。
  • 触发后可检查指定路径下的.hprof文件是否生成,验证命令行选项的有效性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:13:10