首页 > 系统相关 >Jmeter内存溢出:java.lang.OutOfMemoryError: Java heap space解决思路

Jmeter内存溢出:java.lang.OutOfMemoryError: Java heap space解决思路

时间:2024-05-05 15:33:06浏览次数:23  
标签:lang set java space 内存 HEAP JMeter 溢出

一、问题原因

JMeter压测,有时候当模拟并发请求较大或者脚本运行时间较长时,JMeter会停止,报OOM(内存溢出)错误。

原因是JMeter是一个纯Java开发的工具,内存由java虚拟机JVM管理,当内存回收不及时,堆内存不足时,就会报内存溢错误。

概念补充:

内存泄露:应用使用资源之后没有及时释放,导致应用内存中持有了不需要的资源。

内存溢出:应用的内存已经不能满足正常使用了,堆栈已经达到系统设置的最大值,进而导致崩溃。

通常都是由于内存泄露导致堆栈内存不断增大,从而引发内存溢出。

对JMeter而言也是如此,JMeter测试过程中,如果内存溢出的话,一般会出现上图中的提示:java.lang.OutOfMemoryError: Java heap space:意思就是堆内存溢出,不够用了

二、解决方法

知道了报错出现的原因是因为堆内存大小不足引起的,自然而然就会想到内存溢出的解决方法:调整堆内存大小。

步骤(以Windows系统为例,Linux系统类似):

1、打开jmeter.bat文件,按关键字“HEAP”搜索,把原来的配置改为如下:

修改前:

if not defined HEAP (
    rem See the unix startup file for the rationale of the following parameters,
    rem including some tuning recommendations
    set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
)

修改后:

 

if not defined HEAP (
    rem See the unix startup file for the rationale of the following parameters,
    rem including some tuning recommendations
    set HEAP=-Xms512m -Xmx4000m
    set NEW=-XX:NewSize=256m -XX:MaxNewSize=512m
)

修改语句如下:

set HEAP=-Xms512m -Xmx4000m:调整堆内存的大小
set NEW=-XX:NewSize=256m -XX:MaxNewSize=512m:调整堆内存中新生带的大小

注意:

这个值不是越大越好,要根据压测使用的机器而定,一般而言,堆内存的最大值不要超过物理内存的一半,否则容易导致jmeter运行变慢、

卡顿甚至内存溢出(因为java本身的垃圾回收机制是动态分配内存,调整的时候其本身会占用很多内存),NEW分配的内存,不宜太大。

2、修改完成后保存,重启JMeter,即可生效。

三、小结

1、这种修改堆大小的方法只适用一部分情况,并不是万能的,当需要模拟的线程数较大时,就需要根据具体情况采用分布式压测的方式了。

2、命令行运行JMeter时,一定要禁用“查看结果树”、“聚合报告”等监听器,因为真的真的真的很消耗内存。

标签:lang,set,java,space,内存,HEAP,JMeter,溢出
From: https://www.cnblogs.com/wangjunjiehome/p/18173541

相关文章

  • 为什么我要使得GOLang重写SAAS(软件即服务)服务端
    引言“道”在中国哲学中,是一个重要的概念,表示“终极真理”。“道”这一概念,不单为哲学流派诸子百家所重视,也被宗教流派道教等所使用。大道至简的意思就是大道理是极其简单的,简单到一两句话就能说明白。所谓“真传一句话,假传万卷书”。正文在开启独立创作之路之前,我主要用不用......
  • ollama + ollama web + fastapi app (langchain) demo
    ollama+ollamaweb+fastapiapp(langchain)demohttps://github.com/fanqingsong/ollama-dockerWelcometotheOllamaDockerComposeSetup!ThisprojectsimplifiesthedeploymentofOllamausingDockerCompose,makingiteasytorunOllamawithallitsd......
  • REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS
    发表时间:2023(ICLR2023)文章要点:文章提出一个简单有效的ReAct框架,将reasoning和action结合,在交互式的环境上进行测试,取得了很好的效果。其中reasoning作为推理模块,帮助模型归纳,跟踪和更新动作规划,acting和环境交互收集更多信息(reasoningtraceshelpthemodelinduce,track,a......
  • Golang:go-humanize将文件大小转换成Kb、Mb、Gb适合人类阅读的单位
    Golang:go-humanize将文件大小转换成Kb、Mb、Gb适合人类阅读的单位原创 吃个大西瓜 CodingBigTree 2024-05-0408:30 云南​最近去了昆明的教场中路体验了满屏蓝花楹,感受到了梦幻般的世界,随手拍了一张图,分享给大家,有时间可以去一趟,体验一次,顺便说一下,美女很多喔 ......
  • 解除搜狗输入法Ctrl+Space(Ctrl+空格)占用(未解决)
    描述按下Ctrl+space时,中文输入法会切换语言而不是映射为对应的快捷键操作(如代码建议)后来发现其实不只是搜狗的问题,换了个讯飞还是有这个问题。试错解决(不完美)使用微软拼音治标不治本,微软拼音可以解除占用,但是改回搜狗又不行了。因此这个方法适用于能用的惯微软拼音的人。反......
  • Java(5)-双亲委派机制
    如何理解双亲委派机制双亲委派机制是Java中类加载器加载类的一种方法,可以想象一个大家庭中的孩子想要一本书来阅读:在这个家庭中,孩子会先向他的父亲(子类加载器)要这本书,如果没有这本书,他的父亲就会去向孩子的祖父(父类加载器)要这本书。这个过程会一直持续,直到到达家族中的最高辈分,......
  • LangChain RAG 下册
    路由Routing完成第一步QueryTranslation之后就要进入第二步Routing,Routing的意义在于根据不同的问题类型走不同的策略,比如关系型数据库走nl2sql查询,向量查询走索引向量数据库查询。逻辑和语义路由LogicalandSemanticrouting使用函数调用进行分类参考资料:https:......
  • java exception and finally return
    exceptioncategorythrowableallbelongstothrowableerrorStackOverFlowOutOfMemoryruntimeexceptionArrayIndexOutOfBoundsExceptionNullPointerExceptioncheckecexception(needtocatchorthrows)catch最好设置一个兜底的匹配原则匹配的原则是:如果抛出的异......
  • golang 官方代码 汇总
    go1.22.2-- 序章golang官网的代码汇总,汇总到一起,方便查阅。 注,如有侵权,请通知我处理......
  • java: 无效的目标发行版: 17 , 解决方案
    问题描述解决方案......