J'utilise une application web sur BEA Weblogic 9.2. Jusqu'à récemment, nous utilisions JDK 1.5.0_04, avec JAI 1.1.2_01 et Image IO 1.1. Dans certaines circonstances (nous n'avons jamais compris exactement pourquoi), lorsque nous traitions des images volumineuses (mais pas très volumineuses - quelques Mo), la machine virtuelle Java se bloquait sans message d'erreur ou trace de pile ou quoi que ce soit. Cela ne s'est pas produit beaucoup en production, mais assez pour être une nuisance et finalement nous avons pu le reproduire.java.lang.Error: "Il n'y a pas assez de mémoire disponible pour traiter cette commande" lors de la génération des images
Nous avons décidé de passer à JRockit90 1.5.0_04 et nous n'étions plus en mesure de reproduire le problème dans notre environnement de test, nous avons donc pensé que nous l'avions léchée. Maintenant, cependant, après que le serveur d'applications a été mis en place pendant un certain temps, nous commençons à recevoir le message d'erreur "Pas assez de mémoire disponible pour traiter cette commande" pendant les opérations d'image. 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)
Est-ce que quelqu'un a déjà vu quelque chose comme ça? Toute idée de ce qui pourrait arriver?
Voir aussi http://stackoverflow.com/questions/507853/system-error-code-8-not-enough-storage-is-available-to-process-this-command et http://stackoverflow.com/questions/548971/win32exception-pas-assez-de-stockage-est-disponible-pour-traiter-cette-commande –
Intéressant. Il fonctionne sur Windows Server 2003 R2 32 bits (Standard). La machine a 3,83 Go ou RAM installée. En regardant le paramètre de Registre pour \ System \ CurrentControlSet \ Control \ Session Manager \ SubSystem et trouvé ceci: SharedSection = 1024,3072,512. La question que vous avez référencée suggère de changer le numéro du milieu. Est-ce toujours la bonne chose à changer pour une application sans tête fonctionnant en tant que service? – jhericks
Nous ne pouvons toujours pas trouver le problème, mais nous allons ajuster le 3ème chiffre (512) à 1024 et voir si cela aide la situation. – jhericks