java.lang.Message d'erreur: “Pas assez de mémoire disponible pour traiter cette commande” lors de la génération d'images

Je suis en cours d'exécution d'une application web sur BEA Weblogic 9.2. Jusqu'à récemment, nous avons été à l'aide du JDK 1.5.0_04, avec JAI 1.1.2_01 et de l'Image OI 1.1. Dans certains cas (nous n'avons jamais compris exactement pourquoi), quand nous étions de traitement d'images de grande taille (mais pas que grand - quelques MO), la JVM crash sans aucun message d'erreur ni de trace de pile ou quoi que ce soit. Cela n'a pas beaucoup dans la production, mais assez pour être une nuisance et finalement nous avons été en mesure de le reproduire.

Nous avons décidé de passer à JRockit90 1.5.0_04 et nous ne sommes plus en mesure de reproduire le problème dans notre environnement de test, nous avons pensé qu'il avait léché. Maintenant, cependant, après que le serveur d'application a été pendant un certain temps, on commence à obtenir le message d'erreur "Pas assez de mémoire disponible pour traiter cette commande" lors des opérations. Par exemple:

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)

Quelqu'un a vu quelque chose comme ça avant? Aucune idée de ce qui se passe?

  • Voir aussi stackoverflow.com/questions/507853/... et stackoverflow.com/questions/548971/...
  • Intéressant. Il est en cours d'exécution sur la 32 bits de Windows Server 2003 R2 (Standard). La machine a 3.83 GO de RAM. En regardant le paramètre de registre pour \System\CurrentControlSet\Control\Session Manager\système et trouvé ceci: SharedSection=1024,3072,512. La question que vous l'avez mentionné suggéré de changer le moyen de nombre. Est-ce toujours la bonne chose à changer pour une tête d'application exécute en tant que service?
  • Nous ne trouvez toujours pas le problème, mais nous allons régler le 3ème numéro (512) 1024 et voir si cela aide la situation.
InformationsquelleAutor jhericks | 2010-04-14