首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.Error:生成图像时“没有足够的存储空间可用于处理此命令”

java.lang.Error:生成图像时“没有足够的存储空间可用于处理此命令”
EN

Stack Overflow用户
提问于 2010-04-15 03:02:31
回答 2查看 13.3K关注 0票数 2

我在BEA WebLogic9.2上运行web应用程序。直到最近,我们还在使用带有JAI 1.1.2_01和Image IO1.1的JDKImage1.1。在某些情况下(我们从来不知道确切的原因),当我们处理大图像(但不是那么大-几MB)时,JVM会崩溃,没有任何错误消息或堆栈跟踪或任何东西。这在生产中并不多见,但足以造成麻烦,最终我们能够重现它。

我们决定切换到JRockit90 1.5.0_04,我们不再能够在我们的测试环境中重现这个问题,所以我们认为我们已经解决了它。但是,现在,在应用服务器启动一段时间后,我们开始在映像操作期间收到错误消息“没有足够的存储空间可用来处理此命令”。例如:

代码语言:javascript
复制
java.lang.Error: Error starting thread: Not enough storage is available to process this command.
at java.lang.Thread.start()V(Unknown Source)
at sun.awt.image.ImageFetcher$1.run(ImageFetcher.java:279)
at sun.awt.image.ImageFetcher.createFetchers(ImageFetcher.java:272)
at sun.awt.image.ImageFetcher.add(ImageFetcher.java:55)
at sun.awt.image.InputStreamImageSource.startProduction(InputStreamImageSource.java:149)
at sun.awt.image.InputStreamImageSource.addConsumer(InputStreamImageSource.java:106)
at sun.awt.image.InputStreamImageSource.startProduction(InputStreamImageSource.java:144)
at sun.awt.image.ImageRepresentation.startProduction(ImageRepresentation.java:647)
at sun.awt.image.ImageRepresentation.prepare(ImageRepresentation.java:684)
at sun.awt.SunToolkit.prepareImage(SunToolkit.java:734)
at java.awt.Component.prepareImage(Component.java:3073)
at java.awt.ImageMediaEntry.startLoad(MediaTracker.java:906)
at java.awt.MediaEntry.getStatus(MediaTracker.java:851)
at java.awt.ImageMediaEntry.getStatus(MediaTracker.java:902)
at java.awt.MediaTracker.statusAll(MediaTracker.java:454)
at java.awt.MediaTracker.waitForAll(MediaTracker.java:405)
at java.awt.MediaTracker.waitForAll(MediaTracker.java:375)
at SfxNET.System.Drawing.ImageLoader.loadImage(Ljava.awt.Image;)Ljava.awt.image.BufferedImage;(Unknown Source)
at SfxNET.System.Drawing.ImageLoader.loadImage(Ljava.net.URL;)Ljava.awt.image.BufferedImage;(Unknown Source)
at Resources.Tools.Commands.W$zw(Ljava.lang.ClassLoader;)V(Unknown Source)
at Resources.Tools.Commands.getContents()[[Ljava.lang.Object;(Unknown Source)
at SfxNET.sfxUtils.SfxResourceBundle.handleGetObject(Ljava.lang.String;)Ljava.lang.Object;(Unknown Source)
at java.util.ResourceBundle.getObject(ResourceBundle.java:320)
at SoftwareFX.internal.ChartFX.wxvw.yxWW(Ljava.lang.String;Z)Ljava.lang.Object;(Unknown Source)
at SoftwareFX.internal.ChartFX.wxvw.vxWW(Ljava.lang.String;)Ljava.lang.Object;(Unknown Source)
at SoftwareFX.internal.ChartFX.CommandBar.YWww(LSoftwareFX.internal.ChartFX.wxvw;IIII)V(Unknown Source)
at SoftwareFX.internal.ChartFX.Internet.Server.xxvw.YzzW(LSoftwareFX.internal.ChartFX.Internet.Server.ChartCore;Z)LSoftwareFX.internal.ChartFX.CommandBar;(Unknown Source)
at SoftwareFX.internal.ChartFX.Internet.Server.xxvw.XzzW(LSoftwareFX.internal.ChartFX.Internet.Server.ChartCore;)V(Unknown Source)
at SoftwareFX.internal.ChartFX.Internet.Server.ChartCore.OnDeserialization(Ljava.lang.Object;)V(Unknown Source)
at SoftwareFX.internal.ChartFX.Internet.Server.ChartCore.Zvvz(LSoftwareFX.internal.ChartFX.Base.wzzy;)V(Unknown Source)

以前有没有人见过这样的东西?有可能发生什么事的线索吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-07 12:35:58

这应该归功于马库斯·亚当斯,但他的小建议是以评论而不是答案的形式出现的,所以我不能只检查它。他向我指出了this example from another answer,这就起到了作用。

查看\System\CurrentControlSet\CurrentControlSet\Control\SubSystem的注册表设置,发现了以下内容: SharedSection=1024,3072,512。由于这是一个服务(无头),我们更改了第三个数字。新值为SharedSection=1024,3072,1024。自几周前进行此更改以来,该问题尚未再次出现。

票数 4
EN

Stack Overflow用户

发布于 2010-04-15 03:05:16

这听起来可能与线程的堆栈空间耗尽有关。请参阅此帖子http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4765019。JVM有一个-Xss参数来控制堆栈的大小,但是如果您超过了这个参数,听起来您可能会一次创建大量线程……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2640239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档