Skip to content

Commit 86382f4

Browse files
author
taylor.smock
committed
Fix #23837: Set -XX:MaxRAMPercentage to >25% of system memory
This does not currently work for WebStart, see AdoptOpenJDK/IcedTea-Web#954 . As noted in the ticket, all supported MS Windows and Apple macOS machines have 4G+ of RAM. Linux machines don't have a baseline, and some have 1G or less. Where we detect that a machine has <8G of memory in the linux start scripts, we don't add the JVM parameters. As a reminder to everyone reading the changelog: just because we ''ask'' for the ability to use 75% of the system memory doesn't mean we will ''use'' all of that memory. The JVM ''will'' free up unused memory for the rest of the system. We additionally set the minimum memory allocation to 256m; while this ''can'' be lower, that is for minimal amounts of data loaded. A clean JOSM install will use 99mb, for example. But once we add a minimal amount of data and a background layer, static memory usage goes up to 161mb. git-svn-id: https://josm.openstreetmap.de/svn/trunk@19215 0c6e7542-c601-0410-84e7-c038aed88b3b
1 parent 85b28a3 commit 86382f4

File tree

8 files changed

+20
-4
lines changed

8 files changed

+20
-4
lines changed

native/josm-latest.jnlp

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<all-permissions/>
2121
</security>
2222
<resources>
23-
<java version="11+" vendor="Azul" java-vm-args="--add-modules=java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web --add-exports=java.base/sun.security.action=ALL-UNNAMED --add-exports=java.desktop/com.apple.eawt=ALL-UNNAMED --add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED --add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED --add-exports=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED --add-exports=jdk.deploy/com.sun.deploy.config=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED"/>
23+
<java version="11+" vendor="Azul" java-vm-args="-XX:MaxRAMPercentage=75.0 -Xms256m --add-modules=java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web --add-exports=java.base/sun.security.action=ALL-UNNAMED --add-exports=java.desktop/com.apple.eawt=ALL-UNNAMED --add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED --add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED --add-exports=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED --add-exports=jdk.deploy/com.sun.deploy.config=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED"/>
2424
<jar href="josm-latest.jar"/>
2525
</resources>
2626
<application-desc main-class="org.openstreetmap.josm.gui.MainApplication"/>

native/josm.jnlp

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<all-permissions/>
2121
</security>
2222
<resources>
23-
<java version="11+" vendor="Azul" java-vm-args="--add-modules=java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web --add-exports=java.base/sun.security.action=ALL-UNNAMED --add-exports=java.desktop/com.apple.eawt=ALL-UNNAMED --add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED --add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED --add-exports=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED --add-exports=jdk.deploy/com.sun.deploy.config=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED"/>
23+
<java version="11+" vendor="Azul" java-vm-args="-XX:MaxRAMPercentage=75.0 -Xms256m --add-modules=java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web --add-exports=java.base/sun.security.action=ALL-UNNAMED --add-exports=java.desktop/com.apple.eawt=ALL-UNNAMED --add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED --add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED --add-exports=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED --add-exports=jdk.deploy/com.sun.deploy.config=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED"/>
2424
<jar href="josm-tested.jar"/>
2525
<!-- This was removed from josm-latest.jnlp on 2024-06-17. Remove if nothing gets reported. -->
2626
<property name="java.util.Arrays.useLegacyMergeSort" value="true"/>

native/linux/latest/etc/default/josm-latest

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Uncomment the JAVA_OPTS lines to enable their use by /usr/bin/josm-latest
33

44
# Increase usable memory
5-
#JAVA_OPTS="-Xmx2048m ${JAVA_OPTS}"
5+
#JAVA_OPTS="-XX:MaxRAMPercentage=75.0 -Xms256m ${JAVA_OPTS}"
66

77
# Enable OpenGL pipeline (2D graphic accelerators)
88
#JAVA_OPTS="-Dsun.java2d.opengl=True ${JAVA_OPTS}"

native/linux/latest/usr/bin/josm-latest

+6
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ if [ -f "/etc/default/${JOSM_VERSION}" ]; then
5757
. "/etc/default/${JOSM_VERSION}"
5858
fi
5959

60+
# If there is more than 8G ram, we can use up to 75% of the memory while still leaving 2G for other things.
61+
if [ "$(free --mega | grep '^Mem:' | awk '{print $2}')" -gt 8192 ]; then
62+
# But don't set anything if JAVA_OPTS is already set.
63+
JAVA_OPTS="${JAVA_OPTS:=-XX:MaxRAMPercentage=75.0 -Xms256m}"
64+
fi
65+
6066
JAVA_OPTS="-Djosm.restart=true -Djosm.dir.name=JOSM-latest -Djava.net.useSystemProxies=true $JAVA_OPTS"
6167

6268
if [ -z "${JAVACMD}" ] && [ -n "${ALTERNATIVE_JDK}" ]; then

native/linux/tested/etc/default/josm

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Uncomment the JAVA_OPTS lines to enable their use by /usr/bin/josm
33

44
# Increase usable memory
5-
#JAVA_OPTS="-Xmx2048m ${JAVA_OPTS}"
5+
#JAVA_OPTS="-XX:MaxRAMPercentage=75.0 -Xms256m ${JAVA_OPTS}"
66

77
# Enable OpenGL pipeline (2D graphic accelerators)
88
#JAVA_OPTS="-Dsun.java2d.opengl=True ${JAVA_OPTS}"

native/linux/tested/usr/bin/josm

+6
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ if [ -f "/etc/default/${JOSM_VERSION}" ]; then
5757
. "/etc/default/${JOSM_VERSION}"
5858
fi
5959

60+
# If there is more than 8G ram, we can use up to 75% of the memory while still leaving 2G for other things.
61+
if [ "$(free --mega | grep '^Mem:' | awk '{print $2}')" -gt 8192 ]; then
62+
# But don't set anything if JAVA_OPTS is already set.
63+
JAVA_OPTS="${JAVA_OPTS:=-XX:MaxRAMPercentage=75.0 -Xms256m}"
64+
fi
65+
6066
JAVA_OPTS="-Djosm.restart=true -Djava.net.useSystemProxies=true $JAVA_OPTS"
6167

6268
if [ -z "${JAVACMD}" ] && [ -n "${ALTERNATIVE_JDK}" ]; then

native/macosx/macos-jpackage.sh

+2
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ function do_jpackage() {
5959
"${JAVA_HOME}/bin/jpackage" $JPACKAGEOPTIONS -n "JOSM" --input dist --main-jar josm-custom.jar \
6060
--main-class org.openstreetmap.josm.gui.MainApplication \
6161
--icon ./native/macosx/JOSM.icns --type app-image --dest app \
62+
--java-options "-XX:MaxRAMPercentage=75.0" \
63+
--java-options "-Xms256m" \
6264
--java-options "--add-modules java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web" \
6365
--java-options "--add-exports=java.base/sun.security.action=ALL-UNNAMED" \
6466
--java-options "--add-exports=java.desktop/com.apple.eawt=ALL-UNNAMED" \

native/windows/win-jpackage.sh

+2
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ do
5151
jpackage $JPACKAGEOPTIONS -n "JOSM" --input dist --main-jar josm-custom.jar \
5252
--main-class org.openstreetmap.josm.gui.MainApplication \
5353
--icon ./native/windows/logo.ico --type $type --dest app \
54+
--java-options "-XX:MaxRAMPercentage=75.0" \
55+
--java-options "-Xms256m" \
5456
--java-options "--add-modules java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web" \
5557
--java-options "--add-exports=java.base/sun.security.action=ALL-UNNAMED" \
5658
--java-options "--add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED" \

0 commit comments

Comments
 (0)