NetBeans Programm in NetBeans deutlich schneller als als Jar

DanielS

Mitglied
Guten Tag,
ich entwickle ein Performanceintensives Programm. Nun ist mir aufgefallen, dass das Programm, wenn ich es direkt aus Netbeans starte, etwa 3 mal schneller ist als die von NetBeans generierte *.Jar Datei (Komprimierung ist ausgeschaltet).
Das ist ein Problem, mit dem ich so leider nicht leben kann 🙁.
Woran kann das liegen?
Viele Grüße und vielen Dank im Vorraus
Daniel
 
Hallo JohannisderKaeufer,
Danke für deine Antwort. Ich bin mir nicht sicher, wie ich herausfinde, welche JRE Netbeans benutzt, allerdings benutzt Windows 1.7:
screenshotJavaVersion.png

Daran liegt es dann wahrscheinlich nicht, oder?
Viele Grüße
Daniel
 
Vielleicht liegt es an der Speicherzuweisung ? (zu wenig)
Kannst mal schauen, wie die beim starten unter Netbeans aussieht und
dann ev. beim Starten der jar - Datei die Speicherzueweisung anpassen (wenn es denn daran liegt)
 
Vielleicht ist auch einfach nur der Start langsamer? Mögliche Ursachen wär, dass dein OS das Programm (die JVM) zuerst suchen und dann noch starten muss...
 
@faetzminator, der Programmstart dauert nicht lange. Erst das Starten der Berechnung.
@parabool, du hast Recht. Wenn ich es aus Netbeans öffne, hat der Prozess java.exe einen Speicherverbrauch von etwa 700mb. Wenn ich die *.Jar öffne, hat die javaw.exe(anderer Name?) einen Speicherverbrauch von nur 40mb. Wie kann ich das ändern? Also wie kann ich der *.Jar Datei "mitteilen", dass sie sich viel mehr Speicher nehmen darf?
Viele Grüße
Daniel
 
Also wie kann ich der *.Jar Datei "mitteilen", dass sie sich viel mehr Speicher nehmen darf?l

Also ich weiß zwar nicht ob und wenn ja, wie man dass bei der Jar einstellen kann, aber du kannst der Jar selbst mehr RAM zuweisen, indem du sie per Konsole mit den Paramentern Xmx und Xms startest:
Code:
java -Xmx1024M -Xms1024M -jar deineJar.jar

Ne Möglichkeit wäre eine weitere Main.Klasse zuschreiben, die die bisherige Main-Klasse mit den Paramtern ausführt, per Runtime.getRuntime.exec oder gar den ProzessBuilder.
 
Zuletzt bearbeitet:
Also in eine Datei namens z.B. start.bat folgendes eintragen:

start javaw -jar -Xmx1024 -Xms64m deinejar.jar

Dann startest Du die jar über dieses Startskript.
 
Vielen Dank für eure Hilfe, allerdings klappt es noch nicht ganz.
Ich habe eine bat datei erstellt mit folgendem Inhalt:
start javaw -jar -Xmx1024 -Xms64m deinejar.jar
Die Datei deinejar.jar ist im gleichen verzeichnis. Leider passiert einfach nichts, wenn ich die Bat datei öffne 🙁
Viele Grüße
Daniel
 
ändert leider auch nichts. Auch wenn ich den Befehl direkt in der Konsole in dem entsprechenden Ordner ausführe passiert nichts. Kann es an der *.Jar Datei liegen? Doppelklick auf die jar Datei funktioniert allerdings problemlos.
Viele Grüße
Daniel
 
Ich habe eine bat datei erstellt mit folgendem Inhalt:
start javaw -jar -Xmx1024 -Xms64m deinejar.jar
Du hast das m vergessen, sollte heissen:
[c]start javaw -jar -Xmx1024m -Xms64m deinejar.jar[/c]
wobei 64m ein schlechter Startwert (Xms) ist wenn klar ist dass es nicht ausreicht, lieber gleich auf 512m als Xms gehen.
 
Das darf ich leider nicht machen, da es eine Auftragsprogrammierung ist und mein Kunde damit sicher ein Problem hätte 🙁 kann ich euch ansonsten irgendwelche Informationen geben? Oder habt ihr vielleicht eine test.jar, mit der ich das probieren kann, um herauszufinden, ob es an der Jar Datei liegt?
 
Danke maki, der fehler lag an dem fehlenden "m".
Der richtige Code lautet:
start javaw -jar -Xmx1024m -Xms512m Skatanalyse.jar (java anstatt javaw klappt auch, allerdings wird dann eine zusätzliche konsole geöffnet).
Die Performance ist jetzt auch so wie gewohnt, ich danke euch vielmals für eure Hilfe!
Viele Grüße
Daniel
 
So, nun habe ich das ganze an meinen Kunden geschickt und bei ihm funktioniert es nicht, weil javaw nicht gefunden werden kann.
Startproblem.jpg

Es muss also wohl die Umgebungsvariable angepasst werden. Kann das auch über eine bat oder ähnliches geschehen? Ich glaube kaum, dass mein Kunde da den "Standardweg" gehen möchte..
Viele Grüße
Daniel
 
ja, aber kann man das auch irgendwie automatisch machen? Ist ja nicht bei mir auf dem Rechner sondern bei meinem Kunden..
Und im allgemeinen verstehe ich auch nicht, warum java das bei der installation nicht automatisch macht?
 
Hast du mal nachgefragt, ob er die neuste Java-Version (7) auf dem Rechner hat? Bei näherer Betrachtung habe ich auch nichts von Java in meinen Umgebungsvariablen stehen und es funktioniert trotzdem.
 
Mein Programm ist in Java7 und die Jar funktioniert ja auch. Also müsste er ja Java7 installiert haben? Außerdem ist seine Windows Installation erst etwa einen Monat alt, vermutlich hat er sich da dann auch gleich das neuste Java installiert.
Viele Grüße
Daniel
 
Frag nur, weil ich auch vor kurzem mein System neu aufgesetzt habe und es dann ohne Path setzen lief. Ansonsten kannst du ihn dein Programm ja so aufrufen lassen:

Code:
c:\Programme\java\jre7\bin\javaw -jar -Xmx1024m -Xms512m Skatanalyse.jar

Das sollte bei Installation mit Standardpfad eigentlich funktionieren.

Edit: Der Pfad könnte natürlich etwas anders sein, bei 32-Bit Systemen. (Bin mal von Windows 7 ausgegangen)

Edit2: Außerdem könntest du sonst versuchen in einer .bat Datei den Pfad zu setzen mit
Code:
set JAVA_HOME=c:\Programme\java\jre7\bin
Code:
set path=%path%;%JAVA_HOME%

Für die beiden Befehle möchte ich jetzt aber keine Garantie übernehmen, und solltest vielleicht nochmal vorher nachschauen ob es funktioniert, bevor du dir oder deinem Kunden den path zerschießt. Von daher wäre es wohl einfacher den Java-Pfad in den Umgebungsvariablen zu setzen.
 
Zuletzt bearbeitet:
Danke für deine Hilfe. Ich werde mal probieren, den Java Pfad direkt in der Bat anzugeben.
Ist es denn möglich, bei einem 64bit Windows eine 32bit java version zu installieren?
Viele Grüße
Daniel
 
Habe jetzt mal noch 4 Bat Dateien an den Kunden verschickt (2 Deutsche, 2 Englische) und werde mich wieder melden, wenn ich neues weiß.
Ansonsten schonmal vielen Dank.
 
Ojehmine, du kannst doch nicht bei deinem Kunden die Umgebungsvariablen umsetzten. Wie willst du denn wissen wo bei ihm die javaw.exe liegt? Am Ende machst du noch was kaputt und kannst dafür geradestehen.
Kann dein Kunde denn die jar Datei ausführen wenn er sie einfach mal doppelklickt?
 

Neue Themen


Zurück
Oben