Toon posts:

[Java] java.lang.OutOfMemoryError, komt door ImageMagick?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste GOT'ers,

Ik ben bezig met het ontwikkelen van een Java-servlet die gebruikt maakt van ImageMagick, maakt ik blijf vastzitten en krijg maar dezelfde error:

Catalina.out (de Tomcat4-logfile):
code:
1
java.lang.OutOfMemoryError


Als ik de servlet via http:// aanroep, krijg ik deze error.
WebApp: Error 500
(File: //home/builder/pb_work_dir/psa_patch_7.0.4/psa/apache-modules/mod_webapp_apache2/work/jakarta-tomcat-connectors-4.1.29-src/webapp/lib/pr_warp.c Line: 398)

--------------------------------------------------------------------------------
Communication interrupted
ImageMagick werkt perfect in PHP. Ik heb net JMagick geinstalleerd om samen te werken met ImageMagick in Java. Ik hoopte dat het installeren van JMagick deze error verhielp, ik krijg deze error namelijk al voordat ik JMagick installeerde. (Outofmemory + Error 500)

This is de broncode van mijn 'Test if ImageMagick is working in Java'-servlet:
Alvast bedankt! Ik ben hier al 3 dagen mee bezig, maar heb geen idee wat nu de eigenlijke oorzaak is van deze error.

[ Voor 56% gewijzigd door Verwijderd op 27-11-2004 19:23 ]


Verwijderd

volgens mij zoek je op de verkeerde plek. 't lijkt me niet dat er een outOfMemory error door jouw test servlet wordt gegenereert, of je test.jpg/ je JMagick libje moeten brak zijn.
hoeveel geheugen kan/mag en wil tomcat gebruiken? en wat voor dingen draaien er nog meer in je tomcat?

en is dat de enige regel in je logfile?
ik kan me niet voorstellen dat er alleen "java.lang.OutOfMemoryError" in je logfile staat
tomcat zou een stacktrace moeten genereren bij zulke ernstige fouten.
probeer die eens te vinden en je weet al veel meer over de oorzaak.

Verwijderd

"java.lang.OutOfMemoryError" heeft helaas geen stacktrace

Omdat als de VM geen geheugen meer heeft dus ook geen geheugen meer kan allocaten om een stack trace aan te maken.

Zou ie dat wel nog hebben (in een theoretische omgeving) dan zou een stacktrace van een OutOfMemoeryError nog niet veel nut hebben omdat het kan zijn dat een object heel veel geheugen in neemt en de error pas komt als je een klein object probeert te allocaten. Je zou dan denken dat het kleine object de oorzaak is terwijl dat incorrect zal zijn.

[ Voor 107% gewijzigd door Verwijderd op 28-11-2004 03:32 ]


  • paulh
  • Registratie: Juli 1999
  • Laatst online: 11-05 14:30
Je kan misschien nog wat klooien met -Xms en -Xmx parameters van java maar dat is meer een symptoonbestrijding dan een oplossing denk ik.


Verder zou je eens moeten kijken of je niet een oneindige loop in je code hebt staan die dus door die loop alsmaar meer geheugen gaat pakken.

[ Voor 35% gewijzigd door paulh op 28-11-2004 12:21 ]

[ZwareMetalen.com] - [Kom in aktie tegen de CO2 maffia]


Verwijderd

Topicstarter
Deze servlet werkt wel op mijn Windows-Desktop-Server (Borland/Tomcat), waar ik ook ImageMagick en JMagick heb geinstalleerd.

Deze servlet werkt niet op mijn Linux-server met Tomcat4, waar ik ook ImageMagick en JMagick heb geinstalleerd.

Heeft iemand advies rondom heb troubleshooten? Kloten met de heap-sizes (-Xms) heb ik al gedaan. Servlet blijft langer laden, maar nog steeds een OutofMemory error.

Verwijderd

Verwijderd schreef op zondag 28 november 2004 @ 03:21:
"java.lang.OutOfMemoryError" heeft helaas geen stacktrace

Omdat als de VM geen geheugen meer heeft dus ook geen geheugen meer kan allocaten om een stack trace aan te maken.
Vaag, je zou toch denken dat er een een stukje geheugen gereserveerd wordt speciaal voor het maken van een stacktrace...
Verwijderd schreef op zondag 28 november 2004 @ 13:34:
Deze servlet werkt wel op mijn Windows-Desktop-Server (Borland/Tomcat), waar ik ook ImageMagick en JMagick heb geinstalleerd.

Deze servlet werkt niet op mijn Linux-server met Tomcat4, waar ik ook ImageMagick en JMagick heb geinstalleerd.
grote kans dat je dan een bug hebt gevonden.

heb je de mogelijkheid om tomcat te upgraden naar een versie 5.5?
dat wordt ook geadviseerd op de site van tomcat zelf.
misschien is het ook de moeite waard andere (oudere)versies van ImageMagick/Jmagick te proberen.

en je kan altijd ImageMagick/JMagic helemaal eruit knikkeren en een andere java lib voor image bewerking gaan gebruiken als het echt niet lukt
(ik kan me helemaal voorstellen dat je daar geen zin in hebt, maar ik zeg het toch even ).


en voor het debuggen van tomcat, zie b.v. hier. wel met eclipse als IDE.

[ Voor 24% gewijzigd door Verwijderd op 28-11-2004 16:29 ]


Verwijderd

Topicstarter
Het lijkt me niet dat dit een fout is van Tomcat4 zelf aangezien heb wel zou moeten werken met Tomcat4.

Ik hoef toch geen aanpassing in server.xml te maken ofzo?

Removing web application at context path /startmodule...
StandardWrapper[/startmodule:start]: Waiting for 8 instance(s) to be deallocated
Removing web application at context path /dennis...
StandardWrapper[/dennis:start]: Waiting for 5 instance(s) to be deallocated

Dit zie ik wel bij een service tomcat4 restart. Dit maakt toch niets uit?

*Update*
Toevoegingen als
CATALINA_OPTS="-Xms96m -Xmx128m" hadden weinig effect. Laden van het script duurde alleen iets langer.

[ Voor 12% gewijzigd door Verwijderd op 29-11-2004 16:01 ]


  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 10-05 16:41

Nick_S

++?????++ Out of Cheese Error

You can use Java Advanced Image
http://java.sun.com/produ...loads/download-1_1_2.html
this will avoid the out of memory error.

I use it to read and show 20K*20K pixel images.
the loading is immadiate.
If you use javax.media.jai.widget.ScrollingImagePanel (deprecated) class to visulize the image is quite quick.
Obviouse that if you want to visualize the entire image you will need to wait an approprite time for rescaling it.
Komt van de Sun Java Forums. (http://forum.java.sun.com...D=2478076&threadID=518308)
Hopelijk heb je er wat aan.

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


  • paulh
  • Registratie: Juli 1999
  • Laatst online: 11-05 14:30
Ik weet niet welke IDE je gebruikt maar in Eclipse kan je prima de boel debuggen.

Daarnaast weet ik niet of de code van imagemagick ook opensource is want dan kan je die zelfs koppelen aan eclipse waardoor je precies kan zien op welke regel in de code de foutmelding optreedt. Kan je het eventueel zelfs zelf oplossen.

Maar zoals ik al eerder zij, kijk eens naar je while/for loops of die wel eindig zijn.
Ik ben vaak zat wel eens vergeten een i.next() aan te roepen binnen een while of forloop op een iterator. Nou, dan loopt je geheugen binnen een paar seconden vol
als je daar genoeg objecten creeert.

[ZwareMetalen.com] - [Kom in aktie tegen de CO2 maffia]


Verwijderd

Domme vraag, maar werkt ImageMagick wel goed vanuit andere toepassingen op Linux? (En ja het is 3.26, dus echt helemaal bij ben ik niet meer)

[ Voor 26% gewijzigd door Verwijderd op 30-11-2004 03:30 ]


Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 30 november 2004 @ 03:25:
Domme vraag, maar werkt ImageMagick wel goed vanuit andere toepassingen op Linux? (En ja het is 3.26, dus echt helemaal bij ben ik niet meer)
Sorry, voor mijn late reactie. ImageMagick werkt wel vanuit PHP. Ik heb het een systeembeheer willen laten doen, maar zij zeggen "JavaMagick/ImageMagick werkt niet op jouw server vanwege... OS, Plesk, slechte configuratie van diverse bestanden."

Kan dit kloppen?

(Hoe krijg ik e-mail notificatie voor posts?)
Pagina: 1