Friday, August 1, 2014

HotSpot: What Does {pd product} Mean?

In [1], we have discussed how to find out default HotSpot JVM values.  In the output, you may have spotted:
{pd product}
What does it mean? In this article, we will examine that in depth.

Platform Dependent


{pd product} means platform-dependent product option.  First of all, if a flag is a product option, maybe you want to pay attention to it and may want to change its value for better performance.  If it's an experimental or diagnostic flag, you may want to ignore it.

If an option is {pd product}, it means that its default value will be dependent on which platform its implementation would be compiled on.  Currently, these platforms are supported, but not limited to:
  • ARM
  • PPC
  • Solaris
  • x86

Examples


Two of the {pd product} flags, we would like to discuss here further.  In JDK 7u51,[2] they have the following default values on x86 platforms:

    uintx ReservedCodeCacheSize     = 50331648        {pd product}
    bool  TieredCompilation         = false           {pd product}

These default values have been changed in later JDK 8 builds.  For example, in JDK 8u20, they have the following default values on the same server:

    uintx ReservedCodeCacheSize     = 251658240        {pd product}
    bool  TieredCompilation         = true             {pd product}

As discussed in [3,4], you may want to tune these flags for better performance.


References

  1. What Are the Default HotSpot JVM Values?
  2. Java™ SE Development Kit 7, Update 51 (JDK 7u51)
  3. Performance Tuning with Hotspot VM Option: -XX:+TieredCompilation (XML and More)
  4. A Case Study of Using Tiered Compilation in HotSpot (XML and More)  

No comments: