JAL-3477 New jvmmemmax config option in getdown and getdown config. Set to 32G cap.
[jalview.git] / getdown / src / getdown / core / src / main / java / com / threerings / getdown / data / Application.java
index 7c2a427..f41bf6a 100644 (file)
@@ -790,45 +790,27 @@ public class Application
             addAll(jvmargs, _jvmargs);
         }
 
-        // see if a percentage of physical memory option exists
-        int jvmmempc = config.getInt("jvmmempc", -1);
+        // see if a percentage of physical memory, or max heap size options exist
+        String jvmmempc = config.getString("jvmmempc", null);
+        String jvmmemmax = config.getString("jvmmemmax", null);
         // app_id prefixed setting overrides
         if (appPrefix.length() > 0) {
-            jvmmempc = config.getInt(appPrefix + "jvmmempc", jvmmempc);
-        }
-        if (0 <= jvmmempc && jvmmempc <= 100) {
-          
-          long maxMemLong = -1;
-
-          try
-          {
-            maxMemLong = MemorySetting.memPercent(jvmmempc);
-          } catch (Exception e)
-          {
-            e.printStackTrace();
-          } catch (Throwable t)
-          {
-            t.printStackTrace();
-          }
-
-          if (maxMemLong > 0)
-          {
-            
-            String[] maxMemHeapArg = new String[]{"-Xmx"+Long.toString(maxMemLong)};
-            // remove other max heap size arg
-            ARG: for (int i = 0; i < _jvmargs.size(); i++) {
-              if (_jvmargs.get(i) instanceof java.lang.String && _jvmargs.get(i).startsWith("-Xmx")) {
-                _jvmargs.remove(i);
-                break ARG;
-              }
+            jvmmempc = config.getString(appPrefix + "jvmmempc", jvmmempc);
+            jvmmemmax = config.getString(appPrefix + "jvmmemmax", jvmmemmax);
+        }
+        long maxMemLong = -1;
+        maxMemLong = MemorySetting.getMemorySetting(jvmmemmax, jvmmempc);
+        if (maxMemLong > 0)
+        {
+          String[] maxMemHeapArg = new String[]{"-Xmx"+Long.toString(maxMemLong)};
+          // remove other max heap size arg
+          ARG: for (int i = 0; i < _jvmargs.size(); i++) {
+            if (_jvmargs.get(i) instanceof java.lang.String && _jvmargs.get(i).startsWith("-Xmx")) {
+              _jvmargs.remove(i);
+              break ARG;
             }
-            addAll(maxMemHeapArg, _jvmargs);
-            log.info("Max memory set", "maxMemHeapArg", maxMemHeapArg[0]);
-            
           }
-
-        } else if (jvmmempc != -1) {
-          log.warning("'jvmmempc' value must be in range 0 to 100 (read as '"+Integer.toString(jvmmempc)+"')");
+          addAll(maxMemHeapArg, _jvmargs);
         }
 
         // get the set of optimum JVM arguments