terminal-recall icon indicating copy to clipboard operation
terminal-recall copied to clipboard

Refuses to start, "Unrecognized VM option 'DoEscapeAnalysis'"

Open StrikerTheHedgefox opened this issue 10 years ago • 3 comments

H:\sourcecode\TerminalRecall\terminal-recall\target>java -jar runme.jar
Overriding the default JVM settings. If you wish to manually set the JVM setting
s, include the `-Dorg.jtrfp.trcl.bypassConfigure=true` flag in the java command.

Restarting JVM with:
        java -Xmx1024M -Dorg.jtrfp.trcl.bypassConfigure=true -Dcom.sun.managemen
t.jmxremote -XX:+UnlockExperimentalVMOptions -XX:+DoEscapeAnalysis -XX:+UseFastA
ccessorMethods -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:MaxGCPauseMillis=5 -
XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+AlwaysPreTouch -XX:ParallelGCThrea
ds=4 -Xms512m -Xmx768m -jar RunMe.jar
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Unrecognized VM option 'DoEscapeAnalysis'

StrikerTheHedgefox avatar Jan 30 '15 08:01 StrikerTheHedgefox

Commit 539420c058d9ae8ec9f41cb12c1fbb019830ac22 attempts to address this.

Explanation: You may be running from a JVM in client mode. Client JVM doesn't support as many performance features and may throw such an error. This commit attempts to tell the JVM to run in server mode. It is possible that you are running in server mode and the JVM simply doesn't support these flags, in which case the fix will not close the issue and a follow-up would be necessary.

cjritola avatar Jan 31 '15 06:01 cjritola

Error: missing `server' JVM at `C:\Program Files (x86)\Java\jre1.8.0_25\bin\serv
er\jvm.dll'.
Please install or use the JRE or JDK that contains these missing components.

I am using Java 8.

EDIT: It seems forcing server mode limits TRCL to 64-bit users only, with 64-bit Java 8 installs. Server mode does not exist for 32-bit systems, at all. I uninstalled all 32-bit Java versions, and switch to 64-bit, and things worked.

StrikerTheHedgefox avatar Jan 31 '15 19:01 StrikerTheHedgefox

The VM optimization flags are mostly (if not all), Server-specific. 69512bdbb1ec0f011d3515d22df9b2bc8248e913 attempts to detect if 32-bit VM is running and bypasses these flags to run using the Client VM.

Explanation: Client VM is optimized for fast startup and small memory footprint at the expense of running performance. This is probably in consideration that java is (was?) used mostly for applets and small applications running alongside other apps.

In this context, a game is more like a server in the sense that it intends to monopolize the system rather than run momentarily next to many other components, and in the sense that a game tends to be demanding with running performance. JVM startup time isn't trivial it falls lower in priority.

I am leaving this bug open until the commit is tested by myself or someone else.

cjritola avatar Feb 03 '15 05:02 cjritola