JFreeChart - Speichermanagement

Stefan2902

Aktives Mitglied
Hallo,

Ich habe eine Web Applikation gebaut, die ich im Moment um Statistiken erweitere. Die Statistiken erstelle ich mit JFreeChart Diagrammen.

Konzeptionell habe ich ein ChartServlet erstellt, welches ich dann per IMG Tag in meiner JSP Seite aufrufe. Das funktioniert auch alles hervorragend.

Ich habe eine Frage bezüglich des Speichermanagements:

Wenn ich die Applikation nun auf meinem lokalen MAC Client teste, wird bei folgender Codezeile:

Java:
final JFreeChart chart = ChartFactory.createXYLineChart(
				"Titel", "Y-Achse", "X-Achse", data,
				PlotOrientation.VERTICAL, true, true, false);

ein Java Prozess namens
org.apache.catalina.startup.Bootstrap
gestartet. Dieser wird - zumindest auf meinem Client - nie beendet; außer ich fahre meinen Tomcat Server herunter.

Daher meine Frage: Beeinträchtigt das in irgendeiner Weise meine Speicherauslastung? Muss das so sein, dass dieser Prozess dauerhaft läuft?

Gruß

Stefan
 

Kevin94

Top Contributor
Ich kenne mich weder mit JFreeChart noch mit Tomcat wirklich aus, aber
Code:
org.apache.catalina.startup.Bootstrap
klingt für mich verdächtig danach, dass das nichts direkt mit JFreeChart zu tun hat, sondern eher mit deiner JSP zusammenhängt. Catalina ist der Name des SevletContainers von Tomcat (schnell mal gegoogelt), somit wird dieser Prozess/Thread sich um die Beantwortung von Anfragen an die Servlets kümmern und beeinträchtigt nicht deine Speicherauslastung, sondern stellt den essenziellen Teil für die Funktion deines Servlets dar.

PS: Ich verstehe die Begriffe, die du verwendest, in diesem Zusammenhang nicht ganz.
Java Prozess: Ist für mich ein Prozess im Taskmanager. Der hat entweder den Namen java.exe oder javaw.exe (bzw. die Entsrpechungen für das jeweilige OS). Meinst du damit einen vielleicht Thread? Der Name sieht ziemlich nach einer Klasse aus.
Auf dem Client: Sind für mich Desktop-Applikationen. Wenn das ganze immernoch in einem Tomcat läuft, ist das nur ein, läuft der Server halt auf deinem Rechner, das Programm läuft aber rein nominel auf einem Server.
 

Stefan2902

Aktives Mitglied
Danke für deine Antwort und sorry für die unglücklich Wortwahl meinerseits.

Zur Korrektur: Wird o.g. Codezeile ausgeführt wird ein neuer JAVA process gestartet. Auf meinem MAC sehe ich auch eine weitere Applikation, die gestartet wird (Symbol Kaffeetasse - also JAVA Prozess).

O.g. Klassennamen sehe ich wenn ich mit der Maus über den JAVA Prozeß fahre.

Wichtig ist nun, dass dieser JAVA Prozeß definitiv mit der Verwendung von JFreeChart zusammenhängt. Kommentiere ich meine Diagramme aus, wird dieser Prozeß nicht gestartet.

Ich habe auch eine andere Quelle gefunden, die ähnliches beschreibt; jedoch ohne Antwort.

www.jfree.org • View topic - org.apache.catalina.startup.Bootstrap
 

Kevin94

Top Contributor
O.g. Klassennamen sehe ich wenn ich mit der Maus über den JAVA Prozeß fahre.
Wusste ich noch nicht, gibt es unter Windows nicht.

Wie ich in meinem letzen Post schon gesagt habe, glaube ich nicht, dass es an der Verwendung von JFreeChart liegt. Wenn ich die Demo von JFreeChart bei mir lokal ausführe, wird kein solcher Prozess gestartet (Irgenwie logisch, der gestartete Code ist ja ein Teil von Tomcat).
Wie meinst du es mit auskommentieren? Kommentierst du das img-Tag in der JSP aus, oder lässt du einfach ein "leeres" Bild generieren. Ich behauptet, dass der Prozess bei letzerem auch gestartet werden würde und damit ohne, dass irgenwo eine Verbindung zu JFreeChart besteht.
 

Stefan2902

Aktives Mitglied
Leider spiegelt das nicht meine Erkenntnisse wider. Wie bereits angedeutet, wird der extra Prozeß auf Aufruf der folgenden Codezeile generiert:

Java:
final JFreeChart chart = ChartFactory.createXYLineChart(
                "Titel", "Y-Achse", "X-Achse", data,
                PlotOrientation.VERTICAL, true, true, false);

Kommentiere ich diese Zeile aus, so dass im IMG Tag ein leeres Bild angezeigt wird, so wird dieser Prozeß nicht gestartet.

Ja ich gebe dir recht, dass der Packagename bzw. die Klasse auf den Tomcat Container verweisen; jedoch ist das Verhalten wie ich beschrieben habe.

Nachfolgend habe ich noch die Beschreibung eines anderen Fragers hinzugefügt. Sie beschreibt dasselbe, ist jedoch ein wenig präziser als ich das beschreiben kann:

org.apache.catalina.startup.Bootstrap
by javamon » Wed Mar 30, 2005 7:20 pm

Is there a way to configure tomcat so that this Bootstrap program does not start when a new chart is produced? I've written code to produce the image in a servlet/jsp combination, but a java program starts up. Fine for for my local machine, but I can't have these apps floating around or even authorized on the production server.

any idea where I may have miss-steped?

joe
 

Kevin94

Top Contributor
Ich denke ich hab die Lösung für dein Problem. Ich wundere mich nur, dass du es nicht selber gefunden hast, es war der zweite Link, wenn man nach dem Klassennahmen googlet:
osx - Any idea why org.apache.catalina.startup.Bootstrap pops up in dock on Mac? - Stack Overflow

Edit catalina.properties and add a line with "java.awt.headless=true"

Wenn man diesen Rat hört, verstehe ich auch, warum es mit JFreeChart zusammenhängt: JFreeChart nutzt AWT und damit werden alle von AWT benötigten nativen Funktionen geladen (inklusive der GUI-Funktionen). GUI-Funktionen sind aber vermutlich nicht vorgesehen, im Tomcat-Server ausgeführt zu werden, und werden deswegen von Catalina in einer anderen VM ausgeführt. In dem man diesen Parameter hinzufügt wird AWT gesagt, dass das System, auf dem es läuft, rein Text/Konsolen-basiert ist, entsprechende GUI-Operationen also nicht unterstützt werden bzw. nicht geladen werden sollen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E JFreeChart (LineChart) akutalisiert nicht Java Basics - Anfänger-Themen 10
C JFreeChart Linie nicht korrekt dargestellt Java Basics - Anfänger-Themen 1
B Markieren einzelner Punkte in JFreeChart Java Basics - Anfänger-Themen 1
N JFreeChart --> TimeSeries auslesen Java Basics - Anfänger-Themen 9
N JFreeChart - Value und veriable Zeitachse Java Basics - Anfänger-Themen 15
J JFreeChart wird nicht angezeigt Java Basics - Anfänger-Themen 6
A JFreeChart als png abspeichern Java Basics - Anfänger-Themen 2
S Jfreechart mit LinkedList befüllen Java Basics - Anfänger-Themen 1
G JFreeChart | Plot updaten bei neuem Dataset | wahrscheinlich "Thread-abhängig" Java Basics - Anfänger-Themen 3
M Problem JFreeChart Java Basics - Anfänger-Themen 8
M JFreeChart Java Basics - Anfänger-Themen 5
P JFreechart Java Basics - Anfänger-Themen 9
G JFreeChart und das Update(was nicht klappt). Java Basics - Anfänger-Themen 3
G jfreechart einbinden + tutorial Java Basics - Anfänger-Themen 2
G JFreeChart einbinden Java Basics - Anfänger-Themen 4
M JFreeChart nach erneutem aufruf fehlt 2. Achse Java Basics - Anfänger-Themen 4
N JFreeChart Koordinatenachsen Java Basics - Anfänger-Themen 11
G Problem mit der Darstellung (JFreechart) Java Basics - Anfänger-Themen 3
M jfreechart - Balkendiagramm mit Werten anzeigen, geht das? Java Basics - Anfänger-Themen 2
S JFreeChart Java Basics - Anfänger-Themen 4
L JFreeChart Java Basics - Anfänger-Themen 3
L JFreeChart in Eclipse Java Basics - Anfänger-Themen 5
S JFreeChart Java Basics - Anfänger-Themen 7
M Speichermanagement Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben