The startup.ini file must not contain undefined values for the follwing performance optimisation to work, so after you use advanced options you must clean the startup.ini of such lines because using advanced options in the menu overrides startup.ini with your values and gives some lines with undifined values that prevent the motivewave file to do its job in that issues:
Example for a clean startup.ini:
#
# This file contains startup parameters that are passed to the JVM when MotiveWave is started
#
MAX_HEAP=16G
MAX_VRAM=8192M
After you have a clean startup.ini set the value of it to read only. Otherwise startup.ini will get the wrong values again from advanced option if you restart Motivewave, so you can prevent the advanced options menu to change the startup.ini file.
The problems with multiple chart loading much too long can be solved with multiple vm_args in the starter java motivewave
Summary of Arguments and Benefits
- -XX:+UseG1GC (Garbage Collector) - Placement: VM_ARGS_1
Improves memory efficiency and reduces pause times during garbage collection.
- -XX
arallelGCThreads=4 (Parallel Garbage Collection) - Placement: VM_ARGS_2
Utilizes multiple threads for garbage collection, enhancing performance on multi-core processors.
- -Dsun.java2d.opengl=true (Graphics Acceleration) - Placement: VM_ARGS_3
Enables hardware acceleration via OpenGL, which is especially beneficial for smooth chart rendering.
- -XX:+AlwaysPreTouch (Memory Optimization) - Placement: VM_ARGS_4
Optimizes memory access and improves performance during the startup of Motivewave.
With these settings, you should notice a significant improvement in terms of performance, startup time, and graphical rendering.
This kicks in especially if you load multiple charts at the same time under heavy use.
The new mouse scroll bug was solved by spin so big Thanks to him for that!
the smily in my motivewavre starter example file is : P without the blank space between in the forum it is by default a laughing smile. Hope you can get the correct value.
Here is the example of the usage in my starter motivewave:
#!/bin/bash
export GDK_CORE_DEVICE_EVENTS=1
# MotiveWave should be installed under the following directory
SCRIPTDIR=/usr/share/motivewave
# Classpath: dynamically load all jar files in the "jar" directory
CP=""
for entry in "$SCRIPTDIR/jar/"*.jar
do
CP+=":$entry"
done
# trim the first ':'
CP=$(echo $CP | cut -c 2-)
# Maximum Heap. By default, this will be one quarter of the system memory. Optionally, this can be hardcoded (see below)
MAX_HEAP="-Xmx16G" # 16 GB für die JVM
# Maximum VRAM. By default, this will be 8192 MB. Optionally, this can be hardcoded (see below)
MAX_VRAM="8192M" # 8 GB für den Video RAM
# Additional VM arguments (in deiner aktuellen Version wird nur ein Argument gesetzt, das überschreiben wird)
VM_ARGS=""
# Scaling does not seem to be picked up automatically and defaults to 100% (at least on the desktops that we tested)
# Try to get the scale setting for the gnome desktop, but typically this seems to return 0...
gsettings get org.gnome.desktop.interface scaling-factor
SCALE=`gsettings get org.gnome.desktop.interface scaling-factor | awk '{print $2}'`
# If this is 0, then try to guess from the screen resolution
if [[ $SCALE == 0 || $SCALE == "" || !($SCALE =~ ^[0-9]*[.]?[0-9]*$) ]]; then
xrandr --query | grep -A 1 "connected primary" | grep -v connected
H=`xrandr --query | grep -A 1 "connected primary" | grep -v connected | awk '{print $1}' | awk -Fx '{print $2}'`
echo "Resolution: $H"
SCALE=1
if [[ $H -gt 1800 ]]; then SCALE=2; fi
if [[ $H -gt 4000 ]]; then SCALE=3; fi
fi
# Convert this to a percentage
SCALE=$(echo "$SCALE*100" | bc)
SCALE=${SCALE%.*}
SCALE+="%"
# Pull information from the .settings file in the motivewave directory
SETTINGS_FILE=~/.motivewave/startup.ini
if [ -f ${SETTINGS_FILE} ]
then
source ${SETTINGS_FILE}
# Setzen von MAX_HEAP aus startup.ini
[[ -n "${MAX_HEAP}" ]] && MAX_HEAP="-Xmx${MAX_HEAP}"
# Setzen von MAX_VRAM aus startup.ini
[[ -n "${MAX_VRAM}" ]] && MAX_VRAM="-Dprism.maxvram=${MAX_VRAM}"
# Einzeln aufgesetzte VM-Argumente für bessere Flexibilität
[[ -n "${VM_ARGS_1}" ]] && VM_ARGS_1="-XX:+UseG1GC"
[[ -n "${VM_ARGS_2}" ]] && VM_ARGS_2="-XX

arallelGCThreads=4"
[[ -n "${VM_ARGS_3}" ]] && VM_ARGS_3="-Dsun.java2d.opengl=true"
[[ -n "${VM_ARGS_4}" ]] && VM_ARGS_4="-XX:+AlwaysPreTouch"
fi
# Startaufruf der JVM mit den neuen Argumenten
$SCRIPTDIR/jre/bin/motivewave $MAX_HEAP $VM_ARGS_1 $VM_ARGS_2 $VM_ARGS_3 $VM_ARGS_4 -Djdk.gtk.version=2 -Dprism.forceGPU=true -Dsun.java2d.opengl=true -Dprism.order=es2,es1,sw,j2d -Dsun.java2d.pmoffscreen=false -Dprism.vsync=false -Dprism.lcdtext=false -Dawt.useSystemAAFontSettings=false -javaagent:"$SCRIPTDIR/jar/MotiveWave.jar" -Dname="MotiveWave" -Djava.library.path="$SCRIPTDIR/lib" -DUserHome="$HOME" -Duser.dir="$HOME" -DappDir="$SCRIPTDIR" -DLibraryDirectory="$HOME/Library" -DDocumentsDirectory="$HOME/Documents" -DCachesDirectory="$HOME/Library/Caches" -DDesktopDirectory="$HOME/Desktop" -DDownloadsDirectory="$HOME/Downloads" -DSharedPublicDirectory="$HOME/Public" -Dprism.verbose=true -Dglass.gtk.uiScale=$SCALE -Dsun.java2d.uiScale=$SCALE -p "$SCRIPTDIR/javafx" --add-modules=javafx.controls,javafx.base,javafx.graphics,javafx.media,javafx.web,javafx.swing --add-exports javafx.web/com.sun.webkit.network=ALL-UNNAMED -classpath "$CP" MotiveWave