java.lang.Error:“没有足够的存储空间来处理此命令"生成图像时 [英] java.lang.Error: "Not enough storage is available to process this command" when generating images

查看:142
本文介绍了java.lang.Error:“没有足够的存储空间来处理此命令"生成图像时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在BEA Weblogic 9.2上运行Web应用程序.直到最近,我们仍在使用JDK 1.5.0_04,JAI 1.1.2_01和Image IO 1.1.在某些情况下(我们从未弄清确切的原因),当我们处理大图像(但不是那么大-几MB)时,JVM会崩溃而没有任何错误消息或堆栈跟踪或任何其他信息.这在生产中并没有发生太多,但足以令人讨厌,最终我们能够复制它.

I am running a web application on BEA Weblogic 9.2. Until recently, we were using JDK 1.5.0_04, with JAI 1.1.2_01 and Image IO 1.1. In some circumstances (we never figured out exactly why), when we were processing large images (but not that large - a few MB), the JVM would crash without any error message or stack trace or anything. This didn't happen much in production, but enough to be a nuisance and eventually we were able to reproduce it.

我们决定切换到JRockit90 1.5.0_04,但我们再也无法在测试环境中重现该问题,因此我们认为它已被解决.但是,现在,在应用程序服务器启动一段时间后,我们开始收到错误消息:在映像操作期间出现没有足够的存储空间来处理此命令".例如:

We decided to switch to JRockit90 1.5.0_04 and we were no longer able to reproduce the problem in our test environment, so we thought we had it licked. Now, however, after the application server has been up for a while, we start getting the error message, "Not enough storage is available to process this command" during image operations. For example:

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)

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

Has anyone seen something like this before? Any clue what might be happening?

推荐答案

马库斯·亚当斯(Marcus Adams)应该为此而功劳,但他的小建议是以评论的形式而不是答案,所以我不能只是检查一下.他向我指出了此示例从另一个答案开始,就成功了.

Marcus Adams should get the credit for this, but his little advice was in the form of a comment not an answer, so I can't just check it. He pointed me to this example from another answer and that did the trick.

查看\ System \ CurrentControlSet \ Control \ Session Manager \ SubSystem的注册表设置,发现以下内容:SharedSection = 1024,3072,512.由于这是一项服务(无头),因此我们更改了第三个号码.新值是SharedSection = 1024,3072,1024.自几周前进行此更改以来,该问题不再发生.

Looking at the registry setting for \System\CurrentControlSet\Control\Session Manager\SubSystem and found this: SharedSection=1024,3072,512. Since this was a service (headless) we changed the third number. The new value was SharedSection=1024,3072,1024. The problem has not recurred since making this change a few weeks ago.

这篇关于java.lang.Error:“没有足够的存储空间来处理此命令"生成图像时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆