Changeset 15254


Ignore:
Timestamp:
04/20/20 05:36:02 (3 years ago)
Author:
Mark Evenson
Message:

build: annotate available runtime properties

For openjdk11, it seems that use the Z Garbage Collector results in
subjectively zippy performance.

Speculative enacpsulate RDF description in comments.

A primitive version of the RDF can be groked via

cat abcl.properties.in | awk -F = -v options="$options" '/#<>/,/#java.options/ {print $0}'

TODO: dynamically transcribe abcl.properties via introspection of
invoking JVM. The question here is how to avoid making a messy set of
if-thens, instead using something analogous to "feature detection"
rather than "browser detection".

c.f. <https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Feature_detection>.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/abcl.properties.in

    r15185 r15254  
    1 # XXX should be called 'build.properties' but this collides with its
    2 #     usage by the Eclipse IDE
     1## Ant based build process and runtime settings
    32
    4 # Template for Ant based build process settings.
    5 
    6 # Copy to 'abcl.properties' to set options to local builds.
     3## A file named 'abcl.properties' controls settings for the ABCL
     4## build.  This is the prototype for its contents.
    75
    86# Attempt to perform incremental compilation?
     
    1513abcl.javac.source=1.6
    1614
    17 # Additional site specific startup code to be merged in 'system.lisp' at build time
     15## Additional site specific startup code to be merged in 'system.lisp' at build time
    1816#abcl.startup.file=${basedir}/startup.lisp
    1917
    20 ## java.options sets the Java options in the abcl wrapper scripts
     18## java.options sets the invoking JVM options in the abcl wrapper script
    2119
    2220# Base JVM settings that work on all supported platforms
     21# <> java.options
    2322java.options=-XshowSettings:vm -Dfile.encoding=UTF-8
    2423
    25 # Java 11
    26 #java.options=
     24## N.b. Ant properties can only be set once, so lines like
     25##    java.options=${java.options} further options
     26## will NOT work.  Instead one has to "manually" create lines
    2727
    28 # Maximum safe performance on JDK8
    29 #java.options=-d64  -XX:+UseG1GC -XshowSettings:vm -Dfile.encoding=UTF-8 -XX:+AggressiveOpts -XX:CompileThreshold=10
     28#<>
     29#  <java/runtime> openjdk11 ;
     30#  rdfs:seeAlso <https://blog.gceasy.io/2020/03/18/7-jvm-arguments-of-highly-effective-applications/> ;
     31#java.options=-XX:+UseZGC
    3032
    31 # Reasonable defaults for Java 8
    32 #java.options=-d64 -XshowSettings:vm -XX:+UseG1GC
     33#<>
     34#  <java/runtime> openjdk8 ;
     35#java.options=-XX:+UseG1GC -XX:+AggressiveOpts -XX:CompileThreshold=10
    3336
    34 # Java7 on 64bit optimizations
    35 #java.options=-d64 -XshowSettings:vm -XX:+UseG1GC
     37#<>
     38#  rdfs:comment "openjdk7 with 64bit optimizations" ;
     39#  <java/runtime> openjdk7 ;
     40#java.options=-d64 -XX:+UseG1GC
    3641
    37 # Reasonable defaults for openjdk6
    38 #java.options=-d64 -XshowSettings:vm -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=1g -XX:+UseConcMarkSweepGC
     42#<>
     43#  rdfs:comment "openjdk6 is the minimum supported runtime"
     44#  <java/runtime> openjdk6 ;
     45#java.options=-d64 -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=1g -XX:+UseConcMarkSweepGC
    3946
    40 # See
    41 # http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
    42 # for options for the Oracle HotSpot JVM.
     47# Comprehensive documentation for JVM options does not really exist:
     48# per the usual entropy of long projects, the only true source of
     49# truth is the source of the specific openjdk.
     50#
     51# As of 2020, decent online compendiums are
     52# <https://chriswhocodes.com/> and <http://jvm-options.tech.xebia.fr/#>
     53#
     54# ORCL's documentation <http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html>
     55
     56## Various historical option settings
    4357
    4458# Java7 on 64bit optimizations
     
    4963
    5064# Use the G1 garbage collector stablized with jdk1.7.0_04, printing GC details
    51 #java.options=-d64 -Xmx4g -XX:+PrintGCDetails -XX:+UseG1GC
     65#java.options=-d64 -Xmx4g -XX:+UseG1GC
    5266
    5367# Use a separate concurrent GC thread (java-1.6_14 or later)
    5468#java.options=-d64 -Xmx8g -XX:+UseConcMarkSweepGC
    5569
     70# Verbose garbage collection
     71#java.options=-verbos:gc -XX:+PrintGCDetails
     72
    5673# Java 5 era (???) flag to GC class definitions
    5774#java.options=-XX:+CMSPermGenSweepingEnabled
    5875
    59 # The unloading of class definitions is a per jvm policy.  For those
     76# The unloading of class definitions is a per jvm policy.  For
    6077# implementations which run out of permgen space, the following should
    6178# help things out.
Note: See TracChangeset for help on using the changeset viewer.