Java 8 TieredCompilation Blacklist?

Wolfgang Pedot wolfgang.pedot at
Thu Apr 16 14:22:43 UTC 2015

Thanks, that is exactly what I need.
Tests look very promising, I´ll give that a try on the real system soon.


Am 15.04.2015 21:47, schrieb Christian Thalinger:
> exclude is what you want:
> $ java -XX:CompileCommand=help
> The CompileCommand option enables the user of the JVM to control specific
> behavior of the dynamic compilers. Many commands require a pattern that defines
> the set of methods the command shall be applied to. The CompileCommand
> option provides the following commands:
>    break,<pattern>       - debug breakpoint in compiler and in generated code
>    print,<pattern>       - print assembly
>    exclude,<pattern>     - don't compile or inline
>    inline,<pattern>      - always inline
>    dontinline,<pattern>  - don't inline
>    compileonly,<pattern> - compile only
>    log,<pattern>         - log compilation
>    option,<pattern>,<option type>,<option name>,<value>
>                          - set value of custom option
>    option,<pattern>,<bool option name>
>                          - shorthand for setting boolean flag
>    quiet                 - silence the compile command output
>    help                  - print this text
> The preferred format for the method matching pattern is:
>    package/Class.method()
> For backward compatibility this form is also allowed:
>    package.Class::method()
> The signature can be separated by an optional whitespace or comma:
>    package/Class.method ()
> The class and method identifier can be used together with leading or
> trailing *'s for a small amount of wildcarding:
>    *ackage/Clas*.*etho*()
> It is possible to use more than one CompileCommand on the command line:
>    -XX:CompileCommand=exclude,java/*.* -XX:CompileCommand=log,java*.*
> The CompileCommands can be loaded from a file with the flag
> -XX:CompileCommandFile=<file> or be added to the file '.hotspot_compiler'
> Use the same format in the file as the argument to the CompileCommand flag.
> Add one command on each line.
>    exclude java/*.*
>    option java/*.* ReplayInline
> The following commands have conflicting behavior: 'exclude', 'inline', 'dontinline',
> and 'compileonly'. There is no priority of commands. Applying (a subset of) these
> commands to the same method results in undefined behavior.
>> On Apr 14, 2015, at 3:00 AM, Wolfgang Pedot <wolfgang.pedot at> wrote:
>> Hello,
>> I have recently migrated a big-ish application from 7u40 to 8u40 and I noticed a quite substantial increase in CPU utilisation.
>> After doing some research I figured out that the cause of that is TieredCompilation which is now on by default, I have deactivated that feature and now CPU utilisation is back to normal.
>> I tested TieredCompilation before on 7u<something> and also had an increase in CPU up to the point where the application actually slowed down so I ended that test.
>> A part of the application uses BIRT and that tends to generate a lot of short-lived classes to optimize Javascript-code, my guess is that the tiered compiler compiles those classes in an attempt to optimize them and
>> depending on the usage of the system that increases CPU without really accelerating anything (according to statistics). I have found "CompileOnly" which seems to be something to be used for test and development, is there something like a Blacklist I can use to tell the compiler NOT to compile classes in a specific package?
>> The system had been running for ~13h on 8u40 and used 1.5h of CPU-time for compilation, the previous version running on 7u40 had been up for ~62.5days and only used 36min for compilation. I did notice the much quicker warmup in the response-times after the switch to 8u40 but I dont want the system to spend so much time compiling stuff that does not really improve performance.
>> any help would be appreciated
>> Wolfgang

Mit freundlichen Grüßen
Wolfgang Pedot
Fink Zeitsysteme GmbH | Möslestraße 19-21 | 6844 Altach | Österreich
Tel: +43 5576 72388 | Fax: +43 5576 72388 14
wolfgang.pedot at |

Landesgericht Feldkirch, 72223k | USt.ld: ATU36401407

Wir erbringen unsere Leistungen ausschließlich auf Basis unserer AGB und Leistungs- und Nutzungsvereinbarung, die wir auf unserer Webseite unter veröffentlicht haben.

More information about the hotspot-compiler-dev mailing list