JAL-4373 Setting the jvmmempc and jvmmemmax strings from the Arg.getName() for consis... bug/JAL-4373_jvmmemmax_and_jvmmempc_ignored_on_command_line_for_executable_jar_launch
authorBen Soares <b.soares@dundee.ac.uk>
Fri, 19 Jan 2024 17:00:46 +0000 (17:00 +0000)
committerBen Soares <b.soares@dundee.ac.uk>
Fri, 19 Jan 2024 17:00:46 +0000 (17:00 +0000)
src/jalview/bin/Launcher.java
src/jalview/bin/MemorySetting.java
src/jalview/bin/argparser/Arg.java

index 507f501..2a78d8e 100644 (file)
@@ -28,6 +28,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.concurrent.TimeUnit;
 
+import jalview.bin.argparser.Arg;
 import jalview.util.ChannelProperties;
 import jalview.util.LaunchUtils;
 
@@ -35,12 +36,12 @@ import jalview.util.LaunchUtils;
  * A Launcher class for Jalview. This class is used to launch Jalview from the
  * shadowJar when Getdown is not used or available. It attempts to take all the
  * command line arguments to pass on to the jalview.bin.Jalview class, but to
- * insert a -Xmx memory setting to a sensible default, using the -jvmmempc and
+ * insert a -Xmx memory setting to a sensible default, using the --jvmmempc and
  * -jvmmemmax application arguments if specified. If not specified then system
  * properties will be looked for by jalview.bin.MemorySetting. If the user has
- * provided the JVM with a -Xmx setting directly and not set -jvmmempc or
- * -jvmmemmax then this setting will be used and system properties ignored. If
- * -Xmx is set as well as -jvmmempc or -jvmmemmax as argument(s) then the -Xmx
+ * provided the JVM with a -Xmx setting directly and not set --jvmmempc or
+ * --jvmmemmax then this setting will be used and system properties ignored. If
+ * -Xmx is set as well as --jvmmempc or --jvmmemmax as argument(s) then the -Xmx
  * argument will NOT be passed on to the main application launch.
  * 
  * @author bsoares
@@ -62,8 +63,8 @@ public class Launcher
 
   /**
    * main method for jalview.bin.Launcher. This restarts the same JRE's JVM with
-   * the same arguments but with memory adjusted based on extracted -jvmmempc
-   * and -jvmmemmax application arguments. If on a Mac then extra dock:icon and
+   * the same arguments but with memory adjusted based on extracted --jvmmempc
+   * and --jvmmemmax application arguments. If on a Mac then extra dock:icon and
    * dock:name arguments are also set.
    * 
    * @param args
@@ -168,32 +169,24 @@ public class Launcher
       }
       // jvmmempc and jvmmemmax args used to set memory and are not passed on to
       // startClass
-      if (arg.startsWith(
-              "-" + MemorySetting.MAX_HEAPSIZE_PERCENT_PROPERTY_NAME + "="))
+      final String jvmmempcArg = Arg.JVMMEMPC.getName();
+      final String jvmmemmaxArg = Arg.JVMMEMMAX.getName();
+      if (arg.startsWith("-" + jvmmempcArg + "="))
       {
-        jvmmempc = arg.substring(
-                MemorySetting.MAX_HEAPSIZE_PERCENT_PROPERTY_NAME.length()
-                        + 2);
+        jvmmempc = arg.substring(jvmmempcArg.length() + 2);
       }
-      else if (arg.startsWith(
-              "-" + MemorySetting.MAX_HEAPSIZE_PROPERTY_NAME + "="))
+      else if (arg.startsWith("-" + jvmmemmaxArg + "="))
       {
-        jvmmemmax = arg.substring(
-                MemorySetting.MAX_HEAPSIZE_PROPERTY_NAME.length() + 2);
+        jvmmemmax = arg.substring(jvmmemmaxArg.length() + 2);
       }
       // --doubledash versions
-      else if (arg.startsWith("--"
-              + MemorySetting.MAX_HEAPSIZE_PERCENT_PROPERTY_NAME + "="))
+      else if (arg.startsWith("--" + jvmmempcArg + "="))
       {
-        jvmmempc = arg.substring(
-                MemorySetting.MAX_HEAPSIZE_PERCENT_PROPERTY_NAME.length()
-                        + 3);
+        jvmmempc = arg.substring(jvmmempcArg.length() + 3);
       }
-      else if (arg.startsWith(
-              "--" + MemorySetting.MAX_HEAPSIZE_PROPERTY_NAME + "="))
+      else if (arg.startsWith("--" + jvmmemmaxArg + "="))
       {
-        jvmmemmax = arg.substring(
-                MemorySetting.MAX_HEAPSIZE_PROPERTY_NAME.length() + 3);
+        jvmmemmax = arg.substring(jvmmemmaxArg.length() + 3);
       }
       // retain arg
       else
index 7458d55..738d1e7 100644 (file)
@@ -24,6 +24,8 @@ package jalview.bin;
 
 import java.util.Locale;
 
+import jalview.bin.argparser.Arg;
+
 /**
  * Methods to decide on appropriate memory setting for Jalview based on two
  * optionally provided values: jvmmempc - the maximum percentage of total
@@ -37,9 +39,11 @@ import java.util.Locale;
  */
 public class MemorySetting
 {
-  public static final String MAX_HEAPSIZE_PERCENT_PROPERTY_NAME = "jvmmempc";
+  public static final String MAX_HEAPSIZE_PERCENT_PROPERTY_NAME = Arg.JVMMEMPC
+          .getName();
 
-  public static final String MAX_HEAPSIZE_PROPERTY_NAME = "jvmmemmax";
+  public static final String MAX_HEAPSIZE_PROPERTY_NAME = Arg.JVMMEMMAX
+          .getName();
 
   private static final int MAX_HEAPSIZE_PERCENT_DEFAULT = 90; // 90%
 
index 9a05c9f..36f7794 100644 (file)
@@ -311,7 +311,7 @@ public enum Arg
 
   // these last two have no purpose in the normal Jalview application but are
   // used by jalview.bin.Launcher to set memory settings. They are not used by
-  // argparser but are here for Usage statement reasons.
+  // argparser but are here for Usage statement and parsing reasons.
   JVMMEMPC(Type.CONFIG,
           "Limit maximum heap size (memory) to PERCENT% of total physical memory detected. This defaults to 90 if total physical memory can be detected.\n"
                   + "The equals sign (\"=\") separator must be used with no spaces.",