JOSM und mehr RAM-Speicher reservieren

Ich bin praktisch ein DAU und habe folgendes Problem (Windows 7 mit 64 k):

Bis etwa herbst 2011 startete ich JOSM über eine batch-datei *.bat mit folgendem Inhalt zur Reservierung von mehr Speichgerplatz im RAM (bei mir eben 3072)

C:\windows\system32\Java.exe -Xmx3072M -jar “C:\program Files (x86)\JOSM\josm-tested.jar”

Irgendwann funktionierte das nicht mehr, ich kann nicht nachvollziehen, ab wann und warum.

Seitdem starte ich JOSM direkt mit einem link von meinem Desktop, das tut dann auch, aber eben nur mit deutlich weniger reserviertem Speicher.

Kann einer der Wissenden von Euch mal einen Tip geben, wie das wieder zu machen wäre, insbesondere so, dass die regelmäßigen updates von JOSM automatisch herabgeladen und installiert werden.

bei der obigen batch-Datei stimmt der Pfad zu java.exe nicht mehr, wo ist java jetzt und/oder was muß ich da rein schreiben, und mit oder ohne Anführungszeichen.
der Pfad zu josm-tested ist ok.

Herzlichen Dank für Eure Hilfe

Michelwald

bearbeite mal deine bat-Datei und füge in die Zeile darunter ein pause ein. Dann sollte dir das Konsolenfenster sagen, woran es hapert.

Hi,
kannst mal ein Search auf “java.exe” machen.
Normal wird das nach C:\program files\java oder C:\program files(x86)\java installiert, zusätzlich oft nach system32 kopiert,
da das standardmäßig im Windows Suchpfad ist.

Und wie schon geschrieben wurde , bau mal ne “pause” in die Batch-Datei.

Chris

Bei meinem vergleichbaren System habe ich die Datei C:\OSM\JOSM\josm-latest.bat mit folgendem Inhalt erstellt

java -Xmx4600M -jar C:\OSM\JOSM\josm-latest.jar

Und starte dies mit einer Verknüpfung

Der Trick ist "C:\Windows\explorer.exe " vor dem Aufruf der Batch-Datei zu stellen. Dann kann dies auch als Link z.B. in der Taskleiste eingefügt werden.

Ach so, automatische Updates? Weiss ich auch nicht, wie es geht. Wenn in JOSM der entsprechende Hinweis kommt, klicke ich auf meine “wget_latest.bat”, die folgenden Inhalt hat

del josm-latest.jar
wget http://josm.openstreetmap.de/download/josm-latest.jar

Also nur Halb-Automatisch.
wget bekommst Du hier http://gnuwin32.sourceforge.net/packages/wget.htm

Also bitte!

Wenn, dann
alias josm-build=‘cd /home/user/apps; svn co http://josm.openstreetmap.de/svn/trunk josm; cd josm; ant clean dist; cp dist/josm-custom.jar …/…/bin/; cd ~’
:wink:

Bahnhof?

Nein, Linux.

OK, ich habe den Smily überlesen.
Macht das Linux Skript ein automatisches Update? Oder ist dies auch nur ein halbautomatisches Update?

Das Skript holt sich die aktuellsten Ereignisse der Entwicklung vom SVN trunk, “kompilliert” diese und schiebt dann die daraus entstandene binary nach /home/user/bin, wenn ich das so richtig sehe. Also, das daraus resultierende Ergebnis ist zwar noch aktueller als die josm-latest.jar, läuft aber so ohne Zufügung von anderen Befehlen auch nur “halbautomatisch”. Was ist bei dir eigentlich automatisch? Wenn du meinst das, dass Ganze beim starten aktualisieren soll, dann mach doch hinter die Zeile:

wget http://josm.openstreetmap.de/download/josm-latest.jar

noch ein

java -jar .\josm-latest.jar

(Windows-Schreibweise, bei linux dann statt .\ ein ./)
Das Skript ist dann allerdings “dumm”, und holt immer wenn man es aufruft, also in dem Fall dann JOSM startet, die aktuelle josm-latest.jar, wenn man JOSM also alle paar Minuten startet, tut man das lieber direkt über die binary(josm-latest.jar).

Gruß Philipp

da latest immer einmal am Tag kompiliert wird, könnte man beim Start gucken, ob die josm-latest heute heruntergeladen wurde, wenn nicht, soll wget diese neu laden. Ich hab nur keine Ahnung, ob man per batch ans Dateidatum herankommt.

Echt schlimm, mit der Jugend von heute!
Liest einfach nicht die man-pages!

“wget --timestamping ” is all you want :wink:

Und wehe man wechselt das Verzeichnis!

Das geht auch anders :wink: Ich lasse das hier per Cronjob laufen:

#!/bin/sh

cd /programs/Grafik/JOSM
mv -f josm-latest.txt josm-latest-old.txt                                       
wget -O josm-latest.txt  http://josm.openstreetmap.de/latest                    
                                                                                
if diff -q josm-latest.txt josm-latest-old.txt                                  
then                                                                            
        echo "Latest JOSM up to date."                                          
else
        echo "Latest JOSM needs update..."
        mv -f josm-latest.jar josm-latest-old.jar
        wget -O josm-latest.jar  http://josm.openstreetmap.de/josm-latest.jar
fi

mv -f josm-tested.txt josm-tested-old.txt
wget -O josm-tested.txt  http://josm.openstreetmap.de/tested

if diff -q josm-tested.txt josm-tested-old.txt
then
        echo "Tested JOSM up to date."
else
        echo "Tested JOSM needs update..."
        mv -f josm-tested.jar josm-tested-old.jar
        wget -O josm-tested.jar  http://josm.openstreetmap.de/josm-tested.jar
fi

Mein Tipp: Java Webstart verwenden, da ist die automatische Aktualisierung mit drin, irgendwelche Shellskripte komplett überflüssig. Allerdings muss noch der maximale Speicher hochgesetzt werden, sonst läuft das Ding nur mit 64MB. Dazu gibt es auch ein Ticket.

  • Auf josm.openstreetmap.de gehen
  • Die “josm.jnlp” unter “Launch josm.jnlp” mit Rechts-Klick am besten auf dem Desktop speichern.
  • josm.jnlp auf dem Desktop mit notepad öffnen, dort die Zeile

        <j2se version="1.6+"/>

austauschen gegen


        <j2se version="1.6+" initial-heap-size="1024m" max-heap-size="3072m"/>

Achtung: Beide Werte sind für “gewöhnliche” 32bit Systeme zu groß, dort am besten 256m als initial-heap-size und 768m als max-heap-size ausprobieren!

Dann auf josm.jnlp doppelklicken. Fertig.

Übrigens: das Icon mit OSM-Logo, das beim ersten Aufruf auf dem Desktop angelegt wird, hat den größeren Speicher nicht mit drin (warum auch immer). Daher immer auf josm.jnlp doppelklicken.

In JOSM unter Hilfe → Statusbericht müsste dann in etwa stehen:


Identification: JOSM/1.5 (5181 de)
Memory Usage: 76 MB / 2709 MB (41 MB allocated, but free)
Java version: 1.6.0_xx, Sun Microsystems Inc., Java HotSpot(TM) 64-Bit Server VM
Operating system: Windows 7

Werden dann beim jedem click die 7 MB josm neu runtergeladen? Nicht sehr ökonomisch.

MHohmanns Skript liesse sich auch verkürzen:


#!/bin/sh

cd /programs/Grafik/JOSM
wget http://josm.openstreetmap.de/josm-latest.jar -q --timestamping
wget http://josm.openstreetmap.de/josm-tested.jar -q --timestamping

Nein, die aktuelle Version wird lokal gecached.

Sorry, Sorry…des is so aber wirklich sehr kompfortabel…DANKE für den Hinweis.


C:\GnuWin32\bin\wget.exe --timestamping http://josm.openstreetmap.de/josm-tested.jar
C:\Programme\Java\jre7\bin\java.exe -Xmx3000M -jar josm-tested.jar %1

Erst mal herzlichen Dank für Eure Beiträge:

Mein Problem, JOSM mit mehr reserviertem Speicherplatz über eine *.bat-Datei zu starten, funktioniert jetzt:

C:\windows\sysWOW64\java.exe -Xmx1536M -jar “C:\program Files (x86)\JOSM\josm-tested.jar”

Jetzt versuche ich mich mal noch an dem automatischen update …

Euch einen schönen ersten Mai

Michelwald

Gute Idee - die Option kannte ich noch gar nicht, und die entsprechende man-Page ist mit dem Eintrag “Turn on time-stamping.” ein wenig knapp formuliert :wink: Werde ich mal ausprobieren :slight_smile:

So sieht meine josm.bat aus. Gestartet wird sie mit “C:\Users\User\Documents\josm.bat tested” für die stabile Version. Da die vielen bing-Bilder meinen Virenscanner und das Backup regelmäßig ausgebremst haben, habe ich noch eine Löschroutine ans Ende gebastelt.

@echo off
set path=%path%;C:\Program Files\GnuWin32\bin;d:\Program Files\josm
set java_param=-jar -Xmx1024m
set tiles=%localappdata%\Temp\JMapViewerTiles_User

d:
cd "\Program Files\JOSM"

:run_josm
rem Testen ob neue Version von JOSM existiert, wenn "ja", dann download
wget.exe -N http://josm.openstreetmap.de/josm-%1.jar

rem starte JOSM mit Parametern
java.exe %java_param% josm-%1.jar

rem Bing-Tile-Cache loeschen falls mehr als 30000 files im Verzeichnis
dir /a-d "%tiles%\Bing Aerial Maps" | find /c ":" > NUMfiles.###
set /p count=<NUMfiles.###
del /q NUMfiles.###
rem echo %count%
if %count% lss 30000 goto end

:delete_tiles
del /f /q "%tiles%\Bing Aerial Maps"
rem del /f /q "%tiles%\Mapnik"
goto end

:end
rem pause