【随手记录】记一次Java StackOverflow

 

Java版本:

   JDK 1.8.0_91(HotSpot(TM) 64-Bit Server VM)

系统环境:

   Mac OS 10.15.4

场景描述:

   用Java Swing写了个CS版的套打小工具,实现了打印接口 Printable的print方法,对于包含二维码等图片的打印,画笔(Graphics)

g2.drawImage描绘图片时候会报错,错误信息如下:
2020-08-21 18:43:52.360 java[29707:377294] Cocoa AWT: Not running on AppKit thread 0 when expected. (
	0   libosxapp.dylib                     0x000000012386a702 +[ThreadUtilities getJNIEnv] + 38
	1   libawt_lwawt.dylib                  0x0000000123b47e69 syncFromJavaPixels + 1842
	2   libawt_lwawt.dylib                  0x0000000123b482ff LockImage + 75
	3   libawt_lwawt.dylib                  0x0000000123b5ac4c Java_sun_java2d_CRenderer_doImage + 170
	4   ???                                 0x0000000112c21c64 0x0 + 4609678436
	5   ???                                 0x0000000112c0a33d 0x0 + 4609581885
)
2020-08-21 18:43:52.360 java[29707:377294] 	Please file a bug report at http://java.net/jira/browse/MACOSX_PORT with this message and a reproducible test case.
java.lang.StackOverflowError
	at sun.java2d.CRenderer.doImage(Native Method)
	at sun.java2d.OSXSurfaceData.blitImage(OSXSurfaceData.java:1027)
	at sun.java2d.CRenderer.blitImage(CRenderer.java:461)
	at sun.java2d.CRenderer.copyImage(CRenderer.java:474)
	at sun.java2d.CRenderer.copyImage(CRenderer.java:533)
	at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:186)
	at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3318)
	at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3296)
	at sun.print.ProxyGraphics2D.drawImage(ProxyGraphics2D.java:815)
问题处理:
  
看到 StackOverflowError 以为线程内存大小不够(Xss) 或者 有大对象(图片)没释放,把图片分辨率大小等都调低了还是报错!
  查了下
StackOverflow 存在类似的问题:
  

   同时也在openjdk的Bugs系统找到了该问题对应的JDK-Bug记录:

 

 

  试了下 在Window系统相同的JDK版本下 没有这种问题😓
posted @ 2020-08-21 19:38  空知大仙人  阅读(386)  评论(0编辑  收藏  举报