import jalview.schemes.ColourSchemeProperty;
import jalview.util.MessageManager;
import jalview.util.Platform;
+import jalview.util.Worker;
import jalview.ws.jws2.Jws2Discoverer;
import java.io.BufferedReader;
import java.security.PermissionCollection;
import java.security.Permissions;
import java.security.Policy;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Vector;
float ONE_MB = 1048576f;
Runtime runtime = Runtime.getRuntime();
float maxMemory = runtime.maxMemory() / ONE_MB;
- if (maxMemory < 1024 * 15)
+ boolean is9or10 = System.getProperty("java.version").startsWith("10.")
+ || System.getProperty("java.version").startsWith("9.")
+ || System.getProperty("java.version").startsWith("10.")
+ || System.getProperty("java.version").startsWith("1.10.")
+ || System.getProperty("java.version").startsWith("1.9.");
+ if (maxMemory < 1024 * 14)
{
- System.exit();
+ String cmd = "";
+ for (String r : args)
+ {
+ cmd += (cmd.length() == 0) ? r : " " + r;
+ }
+ if (cmd.indexOf("-Xmx") == -1)
+ {
+ cmd = "-Xmx15G " + cmd;
+ System.err.println("relaunching with 15G: " + cmd);
+ Worker worker = Worker.jalviewDesktopRunner(false, cmd, 0,
+ "-Xmx15G"
+ + (is9or10 ? " --add-modules=\"java.se.ee\"" : ""));
+ worker.doEcho();
+ try
+ {
+ while (worker.getExitValue() == null)
+ {
+ try
+ {
+ Thread.sleep(2000);
+ } catch (Exception q)
+ {
+ }
+ ;
+ }
+ } catch (Exception q)
+ {
+ }
+ ;
+
+ System.exit(worker.getExitValue());
+ }
}
- if (System.ge)
+ List<String> rgs = new ArrayList();
+ rgs.addAll(Arrays.asList(args));
+ int i = 0;
+ while (i < rgs.size())
{
- instance = new Jalview();
+ if (rgs.get(i).indexOf("-Xmx") > -1)
+ {
+ rgs.remove(i);
+ }
+ else
+ {
+ i++;
+ }
}
+ instance = new Jalview();
instance.doMain(args);
}