JMeter点击Dummy Sampler报尺寸过大IllegalArgumentException错误如何解决
问题根因
该报错和你配置的JVM Xmx(堆内存)、Xss(栈内存)参数无关,属于macOS系统下JMeter GUI的外观渲染bug:你在Dummy Sampler中配置的220KB JSON响应展开后行数极多,macOS默认的Aqua外观主题在渲染响应文本展示面板时,计算得到的文本渲染图像尺寸超出了AWT组件支持的最大阈值,进而触发崩溃。
完整报错信息如下:
2021-10-25 16:04:02,779 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[AWT-EventQueue-0,6,main] java.lang.IllegalArgumentException: Dimensions (width=27118 height=6346092) are too large at java.awt.image.SampleModel.<init>(SampleModel.java:130) ~[?:?] at java.awt.image.SinglePixelPackedSampleModel.<init>(SinglePixelPackedSampleModel.java:144) ~[?:?] at java.awt.image.Raster.createPackedRaster(Raster.java:798) ~[?:?] at java.awt.image.Raster.createPackedRaster(Raster.java:475) ~[?:?] at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1032) ~[?:?] at java.awt.image.BufferedImage.<init>(BufferedImage.java:351) ~[?:?] at com.apple.laf.AquaPainter$AquaSingleImagePainter.createImage(AquaPainter.java:193) ~[?:?] at com.apple.laf.AquaPainter$AquaSingleImagePainter.lambda$paintFromSingleCachedImage$0(AquaPainter.java:178) ~[?:?] at sun.awt.image.MultiResolutionCachedImage.getResolutionVariant(MultiResolutionCachedImage.java:84) ~[?:?] at sun.java2d.SunGraphics2D.getResolutionVariant(SunGraphics2D.java:3310) ~[?:?] at sun.java2d.SunGraphics2D.drawHiDPIImage(SunGraphics2D.java:3138) ~[?:?] at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3376) ~[?:?] at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3326) ~[?:?]
解决方案
- 切换JMeter外观主题:打开JMeter → 顶部菜单栏「选项」→「外观」,选择除「Mac OS X」/「Aqua」之外的任意主题(如Metal、Darcula),重启JMeter后生效。
- 优化超长响应配置:无需在Dummy Sampler中直接填写完整JSON内容,改用
${__FileToString(your_response.json,,)}函数读取本地存储的220KB JSON文件,既可以保留真实响应体积,又不会在GUI点击Sampler时加载全量文本触发渲染崩溃。 - 升级JMeter版本:该渲染bug在JMeter 5.4.2及更高版本已完成适配修复,升级到最新稳定版即可解决问题。
内容的提问来源于stack exchange,提问作者pratik
相关产品推荐
相关产品推荐

