X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=getdown%2Fsrc%2Fgetdown%2Fcore%2Fsrc%2Fmain%2Fjava%2Fcom%2Fthreerings%2Fgetdown%2Fdata%2FApplication.java;fp=getdown%2Fsrc%2Fgetdown%2Fcore%2Fsrc%2Fmain%2Fjava%2Fcom%2Fthreerings%2Fgetdown%2Fdata%2FApplication.java;h=95397445ae8b6774627517051210ed45cc7edb01;hb=70249b10fbfa41c17038efce103ad086b650d9e2;hp=799b5bb6b8be6e6a3c93056023e30a0736c42377;hpb=af5bc802477affd6e7843fc367f8e91a7831f741;p=jalview.git diff --git a/getdown/src/getdown/core/src/main/java/com/threerings/getdown/data/Application.java b/getdown/src/getdown/core/src/main/java/com/threerings/getdown/data/Application.java index 799b5bb..9539744 100644 --- a/getdown/src/getdown/core/src/main/java/com/threerings/getdown/data/Application.java +++ b/getdown/src/getdown/core/src/main/java/com/threerings/getdown/data/Application.java @@ -789,20 +789,35 @@ public class Application jvmargs = config.getMultiValue(appPrefix + "jvmarg"); addAll(jvmargs, _jvmargs); } + + // extract jvmargs and jvmmempc from command line appargs. These will appear after and override the previous jvmargs + addAll(processCliJvmArgs(_envc.appArgs), _jvmargs); - // see if a percentage of physical memory option exists - int jvmmempc = config.getInt("jvmmempc", -1); - // app_id prefixed setting overrides - if (appPrefix.length() > 0) { - jvmmempc = config.getInt(appPrefix + "jvmmempc", jvmmempc); + // get the set of optimum JVM arguments + _optimumJvmArgs = config.getMultiValue("optimum_jvmarg"); + + // transfer our application arguments + String[] appargs = config.getMultiValue(appPrefix + "apparg"); + addAll(appargs, _appargs); + + // add the launch specific application arguments + _appargs.addAll(_envc.appArgs); + + // see if a percentage of physical memory option exists if it hasn't been set by cli args + if (_jvmmempc > -1) { + _jvmmempc = config.getInt("jvmmempc", -1); + // app_id prefixed setting overrides + if (appPrefix.length() > 0) { + _jvmmempc = config.getInt(appPrefix + "jvmmempc", _jvmmempc); + } } - if (0 <= jvmmempc && jvmmempc <= 100) { + if (0 <= _jvmmempc && _jvmmempc <= 100) { long maxMemLong = -1; try { - maxMemLong = MemorySetting.memPercent(jvmmempc); + maxMemLong = MemorySetting.memPercent(_jvmmempc); } catch (Exception e) { e.printStackTrace(); @@ -825,19 +840,9 @@ public class Application } - } else if (jvmmempc != -1) { - System.out.println("'jvmmempc' value must be in range 0 to 100 (read as '"+Integer.toString(jvmmempc)+"')"); + } else if (_jvmmempc != -1) { + System.out.println("'jvmmempc' value must be in range 0 to 100 (read as '"+Integer.toString(_jvmmempc)+"')"); } - - // get the set of optimum JVM arguments - _optimumJvmArgs = config.getMultiValue("optimum_jvmarg"); - - // transfer our application arguments - String[] appargs = config.getMultiValue(appPrefix + "apparg"); - addAll(appargs, _appargs); - - // add the launch specific application arguments - _appargs.addAll(_envc.appArgs); // look for custom arguments fillAssignmentListFromPairs("extra.txt", _txtJvmArgs); @@ -1130,6 +1135,9 @@ public class Application } if (ext != null && LOCATOR_FILE_EXTENSION.equals(ext.toLowerCase())) { // this file extension should have been dealt with in Getdown class + } else if (filename.startsWith("-")) { + // probably an argument to jvm or jalview + log.info("DOING NOTHING WITH ARG", "appargs", _appargs); } else { _appargs.add(0, "-open"); } @@ -1943,6 +1951,25 @@ public class Application return _appbase; } + protected String[] processCliJvmArgs(List args) { + List extracted = new ArrayList<>(); + if (args != null) { + for (String arg : args) { + if (arg.startsWith("-"+CLI_JVM_ARG_PREFIX)) { + String newArg = arg.substring(CLI_JVM_ARG_PREFIX.length() + 1); + extracted.add(newArg); + } else if (arg.startsWith("-jvmmempc=")) { + try { + _jvmmempc = Integer.parseInt(arg.substring(10)); + } catch (NumberFormatException e){ + log.warning("Could not parse jvmmempc command line argument", "arg", arg); + } + } + } + } + return extracted.toArray(new String[0]); + } + protected final EnvConfig _envc; protected File _config; protected File _backupConfig; @@ -1992,6 +2019,10 @@ public class Application protected List _txtJvmArgs = new ArrayList<>(); + /** jvmmempc for memory settings and other cli arguments for the JVM */ + protected int _jvmmempc = -1; + protected static final String CLI_JVM_ARG_PREFIX = "JVM"; + /** If a warning has been issued about not being able to set modtimes. */ protected boolean _warnedAboutSetLastModified;