Autor Thema: JavaAgent OutOfMemoryError  (Gelesen 2447 mal)

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
JavaAgent OutOfMemoryError
« am: 17.06.10 - 10:19:41 »
Ich habe aktuell ein Problem bei einem auf dem Notes Client laufenden JavaAgent der mir zu einem in ein Richtextfeld hochgeladenes Bild resized.

Bei größeren Bildern so ab 5MB bekomme ich eine OutOfMemoryError Exception.

Jetzt kenne ich natürlich den notes.ini Parameter
JavaMaxHeapSize=number of bytes
http://www.lntoolbox.com/en/notesini-reference/bycategory/serverconfiguration/14-Server_Configuration/1148-javamaxheapsize.html

Der zieht aber nur auf dem Client

Dann habe ich noch was hier gefunden
http://www-01.ibm.com/support/docview.wss?uid=swg21410374
und dann diesen notes.ini Parameter versucht
JavaDebugString=-XX:MaxPermSize=256m

bringt leider auch nix.

Hat jemand eine Idee, wie ich lokalen Java-Agents mehr Speicher geben kann.
Auf dem 7er Client gehen übrigens einige Bilder, die auf dem 8.5 nicht mehr klappen, vermutlich hat der 8.5er Client schon einiges des JavaHeaps selber verbraten :-(

Grüße David

P.S.: Ach ja, der Agent selbst macht natürlich ordenlich recycle() auf alle NotesObjekte ;-)
« Letzte Änderung: 17.06.10 - 11:28:30 von atbits »
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: JavaAgent OutOfMemoryError
« Antwort #1 am: 17.06.10 - 10:55:53 »
Auch mein Versuch mit einem etwas abgewandelten notes.ini Parameter

Code
JavaDebugString=-XX:MaxPermSize=256M -Xmx256M

hat leider nicht funktioniert   :'(
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: JavaAgent OutOfMemoryError
« Antwort #2 am: 17.06.10 - 11:27:48 »
Ha - ich habe es doch mit einem Code-Rewrite fixen können.

Ursprünglich war das Ding für den 6.5er Client und aka JDK 1.3.x
Das muss ich jetzt aber nicht mehr unterstützen (ab Notes 7 und damit JDK 1.4)

Somit kann ich ImageIO.read() verwenden, was scheinbar sparsamer mit dem Speicher umgeht als meine Methode ;-)

Code
/**
     * Liest eine Bidldatei ein ung gibt diese als BufferedImage zurück
     * 
     * Ab JDK 1.4 kann auch ImageIO.read() verwendet werden, das gibts in JDK
     * 1.3 aber nicht.
     * 
     * @param filename
     *            dateiname der zu lesendnen datei
     * @return bufferedImage
     */
    public static BufferedImage readBufferedImage(
            final String filename) {

        // Get Image
        // 1.3 Stuff
	   /* 
        ImageIcon icon = new ImageIcon(filename);
        java.awt.Image image = icon.getImage();

        // Create empty BufferedImage, sized to Image
        BufferedImage buffImage = new BufferedImage(image.getWidth(null), image
                .getHeight(null), BufferedImage.TYPE_INT_RGB);
		*/
		BufferedImage buffImage = null;
		try {
			buffImage = ImageIO.read(new File(filename));
		} catch(Exception e) {
			e.printStackTrace();	
		}

        // Draw Image into BufferedImage
        /*
        Graphics g = buffImage.getGraphics();
        g.drawImage(image, 0, 0, null);
        */

        return buffImage;
    }

Grüße David
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: JavaAgent OutOfMemoryError
« Antwort #3 am: 17.06.10 - 16:06:12 »
Bist du sicher, dass JavaMaxHeapSpace nicht für den Client funktioniert? Ich dachte, dass schon.
Helfen zum Problemfinden können auch JavaVerbose und JavaVerboseGC Einträge.
http://www.ibm.com/developerworks/lotus/library/ls-Java_variables/index.html
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: JavaAgent OutOfMemoryError
« Antwort #4 am: 17.06.10 - 16:14:55 »
Bist du sicher, dass JavaMaxHeapSpace nicht für den Client funktioniert? Ich dachte, dass schon.
Helfen zum Problemfinden können auch JavaVerbose und JavaVerboseGC Einträge.
http://www.ibm.com/developerworks/lotus/library/ls-Java_variables/index.html

... ziemlich sicher - ich hab es versucht und laut Doku und IBM (siehe u.a. Links oben) ist das nur für den Server

JavaVerbose und JavaVerboseGC sind doch eher was fürs Debugging oder?
Damit ich sehe wo und wann der Speicher freigegeben wird???

Grüße David
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz