JVM options for better compiler/compilation speed?

1,558 views
Skip to first unread message

Simon Ochsenreither

unread,
Dec 20, 2012, 9:46:52 AM12/20/12
to scala-i...@googlegroups.com
Charles Nutter seems to have written some tool which combines JVM options, measures startup time of the JRuby console with it and figures out the best combination of options: https://gist.github.com/4343186

Would it make sense to try a similar approach to speed up scalac? Or did anyone already play with JVM options and discovered it wasn't worthwhile?
For example, in the talk at Intel Martin Odersky mentioned that one cause of the compilation slowness is caused by the issue that the JVM's JIT takes 2 minutes to arrive at an optimized state ... did someone try to set the appropriate JVM settings (e. g. -XX:CompileThreshold) to a lower value?

Thanks and bye,

Simon

Lukas Rytz

unread,
Dec 20, 2012, 9:52:27 AM12/20/12
to scala-i...@googlegroups.com
On Thu, Dec 20, 2012 at 3:46 PM, Simon Ochsenreither <simon.och...@gmail.com> wrote:
Charles Nutter seems to have written some tool which combines JVM options, measures startup time of the JRuby console with it and figures out the best combination of options: https://gist.github.com/4343186

Would it make sense to try a similar approach to speed up scalac? Or did anyone already play with JVM options and discovered it wasn't worthwhile?

I played with memory options at some point with the following conclusions (not very surprising):
 - put -Xmx high enough (1.5 gigs for compiling the compiler, higher values didn't help back then)
 - put -Xms to the same value as -Xmx (so the jvm doesn't gc just to try to keep memory as low as possible)
 - parallel gc (-XX:+UseParallelGC) helps a bit

Paul Phillips

unread,
Dec 20, 2012, 10:05:31 AM12/20/12
to scala-i...@googlegroups.com

On Thu, Dec 20, 2012 at 6:46 AM, Simon Ochsenreither <simon.och...@gmail.com> wrote:
Would it make sense to try a similar approach to speed up scalac? Or did anyone already play with JVM options and discovered it wasn't worthwhile?

I've done it before, but not as exhaustively as the subject merits. (At the same time lukas did, actually.) There is a pretty enormous combination space of jvm options. I definitely think it's still a worthwhile thing to do, focusing on GC and JIT options.

The biggest dent you can make in compile times, last I checked, was -d32. (I don't remember if this was before compressed oops by default; if so then it may be much less pronounced now.)

[Global flags]
    uintx AdaptivePermSizeWeight                    = 20              {product}           
    uintx AdaptiveSizeDecrementScaleFactor          = 4               {product}           
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10              {product}           
    uintx AdaptiveSizePausePolicy                   = 0               {product}           
    uintx AdaptiveSizePolicyCollectionCostMargin    = 50              {product}           
    uintx AdaptiveSizePolicyInitializingSteps       = 20              {product}           
    uintx AdaptiveSizePolicyOutputInterval          = 0               {product}           
    uintx AdaptiveSizePolicyWeight                  = 10              {product}           
    uintx AdaptiveSizeThroughPutPolicy              = 0               {product}           
    uintx AdaptiveTimeWeight                        = 25              {product}           
     bool AdjustConcurrency                         = false           {product}           
     bool AggressiveOpts                            = false           {product}           
     intx AliasLevel                                = 3               {product}           
     intx AllocateInstancePrefetchLines             = 1               {product}           
     intx AllocatePrefetchDistance                  = 256             {product}           
     intx AllocatePrefetchInstr                     = 0               {product}           
     intx AllocatePrefetchLines                     = 3               {product}           
     intx AllocatePrefetchStepSize                  = 64              {product}           
     intx AllocatePrefetchStyle                     = 1               {product}           
     bool AllowJNIEnvProxy                          = false           {product}           
     bool AllowParallelDefineClass                  = false           {product}           
     bool AllowUserSignalHandlers                   = false           {product}           
     bool AlwaysActAsServerClassMachine             = false           {product}           
     bool AlwaysCompileLoopMethods                  = false           {product}           
     intx AlwaysInflate                             = 0               {product}           
     bool AlwaysLockClassLoader                     = false           {product}           
     bool AlwaysPreTouch                            = false           {product}           
     bool AlwaysRestoreFPU                          = false           {product}           
     bool AlwaysTenure                              = false           {product}           
     bool AnonymousClasses                          = false           {product}           
    uintx ArraycopyDstPrefetchDistance              = 0               {product}           
    uintx ArraycopySrcPrefetchDistance              = 0               {product}           
     bool AssertOnSuspendWaitFailure                = false           {product}           
     intx Atomics                                   = 0               {product}           
     intx AutoBoxCacheMax                           = 128             {C2 product}        
    uintx AutoGCSelectPauseMillis                   = 5000            {product}           
     intx BCEATraceLevel                            = 0               {product}           
     intx BackEdgeThreshold                         = 100000          {pd product}        
     bool BackgroundCompilation                     = true            {pd product}        
    uintx BaseFootPrintEstimate                     = 268435456       {product}           
     intx BiasedLockingBulkRebiasThreshold          = 20              {product}           
     intx BiasedLockingBulkRevokeThreshold          = 40              {product}           
     intx BiasedLockingDecayTime                    = 25000           {product}           
     intx BiasedLockingStartupDelay                 = 4000            {product}           
     bool BindCMSThreadToCPU                        = false           {diagnostic}        
     bool BindGCTaskThreadsToCPUs                   = false           {product}           
     intx BlockCopyLowLimit                         = 2048            {product}           
     bool BlockLayoutByFrequency                    = true            {C2 product}        
     intx BlockLayoutMinDiamondPercentage           = 20              {C2 product}        
     bool BlockLayoutRotateLoops                    = true            {C2 product}        
     bool BlockOffsetArrayUseUnallocatedBlock       = false           {diagnostic}        
     intx BlockZeroingLowLimit                      = 2048            {product}           
     bool BranchOnRegister                          = false           {C2 product}        
     bool BytecodeVerificationLocal                 = false           {product}           
     bool BytecodeVerificationRemote                = true            {product}           
     bool C1OptimizeVirtualCallProfiling            = true            {C1 product}        
     bool C1ProfileBranches                         = true            {C1 product}        
     bool C1ProfileCalls                            = true            {C1 product}        
     bool C1ProfileCheckcasts                       = true            {C1 product}        
     bool C1ProfileInlinedCalls                     = true            {C1 product}        
     bool C1ProfileVirtualCalls                     = true            {C1 product}        
     bool C1UpdateMethodData                        = true            {C1 product}        
     intx CICompilerCount                           = 2               {product}           
     bool CICompilerCountPerCPU                     = false           {product}           
     bool CITime                                    = false           {product}           
     bool CMSAbortSemantics                         = false           {product}           
    uintx CMSAbortablePrecleanMinWorkPerIteration   = 100             {product}           
     intx CMSAbortablePrecleanWaitMillis            = 100             {manageable}        
    uintx CMSBitMapYieldQuantum                     = 10485760        {product}           
    uintx CMSBootstrapOccupancy                     = 50              {product}           
     bool CMSClassUnloadingEnabled                  = false           {product}           
    uintx CMSClassUnloadingMaxInterval              = 0               {product}           
     bool CMSCleanOnEnter                           = true            {product}           
     bool CMSCompactWhenClearAllSoftRefs            = true            {product}           
    uintx CMSConcMarkMultiple                       = 32              {product}           
     bool CMSConcurrentMTEnabled                    = true            {product}           
    uintx CMSCoordinatorYieldSleepCount             = 10              {product}           
     bool CMSDumpAtPromotionFailure                 = false           {product}           
    uintx CMSExpAvgFactor                           = 50              {product}           
     bool CMSExtrapolateSweep                       = false           {product}           
    uintx CMSFullGCsBeforeCompaction                = 0               {product}           
    uintx CMSIncrementalDutyCycle                   = 10              {product}           
    uintx CMSIncrementalDutyCycleMin                = 0               {product}           
     bool CMSIncrementalMode                        = false           {product}           
    uintx CMSIncrementalOffset                      = 0               {product}           
     bool CMSIncrementalPacing                      = true            {product}           
    uintx CMSIncrementalSafetyFactor                = 10              {product}           
    uintx CMSIndexedFreeListReplenish               = 4               {product}           
     intx CMSInitiatingOccupancyFraction            = -1              {product}           
     intx CMSInitiatingPermOccupancyFraction        = -1              {product}           
     intx CMSIsTooFullPercentage                    = 98              {product}           
   double CMSLargeCoalSurplusPercent                = 0.950000        {product}           
   double CMSLargeSplitSurplusPercent               = 1.000000        {product}           
     bool CMSLoopWarn                               = false           {product}           
    uintx CMSMaxAbortablePrecleanLoops              = 0               {product}           
     intx CMSMaxAbortablePrecleanTime               = 5000            {product}           
    uintx CMSOldPLABMax                             = 1024            {product}           
    uintx CMSOldPLABMin                             = 16              {product}           
    uintx CMSOldPLABNumRefills                      = 4               {product}           
    uintx CMSOldPLABReactivityCeiling               = 10              {product}           
    uintx CMSOldPLABReactivityFactor                = 2               {product}           
     bool CMSOldPLABResizeQuicker                   = false           {product}           
    uintx CMSOldPLABToleranceFactor                 = 4               {product}           
     bool CMSPLABRecordAlways                       = true            {product}           
    uintx CMSParPromoteBlocksToClaim                = 16              {product}           
     bool CMSParallelRemarkEnabled                  = true            {product}           
     bool CMSParallelSurvivorRemarkEnabled          = true            {product}           
     bool CMSPermGenPrecleaningEnabled              = true            {product}           
    uintx CMSPrecleanDenominator                    = 3               {product}           
    uintx CMSPrecleanIter                           = 3               {product}           
    uintx CMSPrecleanNumerator                      = 2               {product}           
     bool CMSPrecleanRefLists1                      = true            {product}           
     bool CMSPrecleanRefLists2                      = false           {product}           
     bool CMSPrecleanSurvivors1                     = false           {product}           
     bool CMSPrecleanSurvivors2                     = true            {product}           
    uintx CMSPrecleanThreshold                      = 1000            {product}           
     bool CMSPrecleaningEnabled                     = true            {product}           
     bool CMSPrintChunksInDump                      = false           {product}           
     bool CMSPrintObjectsInDump                     = false           {product}           
    uintx CMSRemarkVerifyVariant                    = 1               {product}           
     bool CMSReplenishIntermediate                  = true            {product}           
    uintx CMSRescanMultiple                         = 32              {product}           
    uintx CMSRevisitStackSize                       = 1048576         {product}           
    uintx CMSSamplingGrain                          = 16384           {product}           
     bool CMSScavengeBeforeRemark                   = false           {product}           
    uintx CMSScheduleRemarkEdenPenetration          = 50              {product}           
    uintx CMSScheduleRemarkEdenSizeThreshold        = 2097152         {product}           
    uintx CMSScheduleRemarkSamplingRatio            = 5               {product}           
   double CMSSmallCoalSurplusPercent                = 1.050000        {product}           
   double CMSSmallSplitSurplusPercent               = 1.100000        {product}           
     bool CMSSplitIndexedFreeListBlocks             = true            {product}           
     intx CMSTriggerPermRatio                       = 80              {product}           
     intx CMSTriggerRatio                           = 80              {product}           
     intx CMSWaitDuration                           = 2000            {manageable}        
    uintx CMSWorkQueueDrainThreshold                = 10              {product}           
     bool CMSYield                                  = true            {product}           
    uintx CMSYieldSleepCount                        = 0               {product}           
     intx CMSYoungGenPerWorker                      = 67108864        {pd product}        
    uintx CMS_FLSPadding                            = 1               {product}           
    uintx CMS_FLSWeight                             = 75              {product}           
    uintx CMS_SweepPadding                          = 1               {product}           
    uintx CMS_SweepTimerThresholdMillis             = 10              {product}           
    uintx CMS_SweepWeight                           = 75              {product}           
    uintx CPUForCMSThread                           = 0               {diagnostic}        
     bool CheckJNICalls                             = false           {product}           
     bool ClassUnloading                            = true            {product}           
     intx ClearFPUAtPark                            = 0               {product}           
     bool ClipInlining                              = true            {product}           
    uintx CodeCacheExpansionSize                    = 65536           {pd product}        
    uintx CodeCacheFlushingMinimumFreeSpace         = 1536000         {product}           
    uintx CodeCacheMinimumFreeSpace                 = 512000          {product}           
     bool CollectGen0First                          = false           {product}           
     bool CompactFields                             = true            {product}           
     intx CompilationPolicyChoice                   = 0               {product}           
     intx CompilationRepeat                         = 0               {C1 product}        
ccstrlist CompileCommand                            =                 {product}           
    ccstr CompileCommandFile                        =                 {product}           
ccstrlist CompileOnly                               =                 {product}           
     intx CompileThreshold                          = 10000           {pd product}        
     bool CompilerThreadHintNoPreempt               = true            {product}           
     intx CompilerThreadPriority                    = -1              {product}           
     intx CompilerThreadStackSize                   = 0               {pd product}        
    uintx ConcGCThreads                             = 0               {product}           
     intx ConditionalMoveLimit                      = 3               {C2 pd product}     
     bool ConvertSleepToYield                       = true            {pd product}        
     bool ConvertYieldToSleep                       = false           {product}           
     bool CreateMinidumpOnCrash                     = false           {product}           
     bool CriticalJNINatives                        = true            {product}           
     bool DTraceAllocProbes                         = false           {product}           
     bool DTraceMethodProbes                        = false           {product}           
     bool DTraceMonitorProbes                       = false           {product}           
     bool DebugInlinedCalls                         = true            {diagnostic}        
     bool DebugNonSafepoints                        = false           {diagnostic}        
     bool Debugging                                 = false           {product}           
    uintx DefaultMaxRAMFraction                     = 4               {product}           
     intx DefaultThreadPriority                     = -1              {product}           
     bool DeferInitialCardMark                      = false           {diagnostic}        
     intx DeferPollingPageLoopCount                 = -1              {product}           
     intx DeferThrSuspendLoopCount                  = 4000            {product}           
     bool DeoptimizeRandom                          = false           {product}           
     bool DisableAttachMechanism                    = false           {product}           
     bool DisableExplicitGC                         = false           {product}           
ccstrlist DisableIntrinsic                          =                 {diagnostic}        
     bool DisplayVMOutput                           = true            {diagnostic}        
     bool DisplayVMOutputToStderr                   = false           {product}           
     bool DisplayVMOutputToStdout                   = false           {product}           
     bool DoEscapeAnalysis                          = true            {C2 product}        
     intx DominatorSearchLimit                      = 1000            {C2 diagnostic}     
     bool DontCompileHugeMethods                    = true            {product}           
     bool DontYieldALot                             = false           {pd product}        
     bool DumpSharedSpaces                          = false           {product}           
     bool EagerXrunInit                             = false           {product}           
     intx EliminateAllocationArraySizeLimit         = 64              {C2 product}        
     bool EliminateAllocations                      = true            {C2 product}        
     bool EliminateAutoBox                          = false           {C2 diagnostic}     
     bool EliminateLocks                            = true            {C2 product}        
     bool EliminateNestedLocks                      = true            {C2 product}        
     intx EmitSync                                  = 0               {product}           
     bool EnableInvokeDynamic                       = true            {diagnostic}        
    uintx ErgoHeapSizeLimit                         = 0               {product}           
    ccstr ErrorFile                                 =                 {product}           
    ccstr ErrorReportServer                         =                 {product}           
     bool EstimateArgEscape                         = true            {product}           
     intx EventLogLength                            = 2000            {product}           
     bool ExplicitGCInvokesConcurrent               = false           {product}           
     bool ExplicitGCInvokesConcurrentAndUnloadsClasses  = false           {product}           
     bool ExtendedDTraceProbes                      = false           {product}           
     bool FLSAlwaysCoalesceLarge                    = false           {product}           
    uintx FLSCoalescePolicy                         = 2               {product}           
   double FLSLargestBlockCoalesceProximity          = 0.990000        {product}           
     bool FLSVerifyAllHeapReferences                = false           {diagnostic}        
     bool FLSVerifyIndexTable                       = false           {diagnostic}        
     bool FLSVerifyLists                            = false           {diagnostic}        
     bool FailOverToOldVerifier                     = true            {product}           
     bool FastTLABRefill                            = true            {product}           
     intx FenceInstruction                          = 0               {product}           
     intx FieldsAllocationStyle                     = 1               {product}           
     bool FilterSpuriousWakeups                     = true            {product}           
     bool ForceDynamicNumberOfGCThreads             = false           {diagnostic}        
     bool ForceNUMA                                 = false           {product}           
     bool ForceTimeHighResolution                   = false           {product}           
     bool ForceUnreachable                          = false           {diagnostic}        
     intx FreqInlineSize                            = 325             {pd product}        
     bool FullProfileOnReInterpret                  = true            {diagnostic}        
   double G1ConcMarkStepDurationMillis              = 10.000000       {product}           
     intx G1ConcRefinementGreenZone                 = 0               {product}           
     intx G1ConcRefinementRedZone                   = 0               {product}           
     intx G1ConcRefinementServiceIntervalMillis     = 300             {product}           
    uintx G1ConcRefinementThreads                   = 0               {product}           
     intx G1ConcRefinementThresholdStep             = 0               {product}           
     intx G1ConcRefinementYellowZone                = 0               {product}           
     intx G1ConfidencePercent                       = 50              {product}           
    uintx G1HeapRegionSize                          = 0               {product}           
     intx G1MarkRegionStackSize                     = 1048576         {product}           
     bool G1PrintHeapRegions                        = false           {diagnostic}        
     bool G1PrintRegionLivenessInfo                 = false           {diagnostic}        
     intx G1RSetRegionEntries                       = 0               {product}           
    uintx G1RSetScanBlockSize                       = 64              {product}           
     intx G1RSetSparseRegionEntries                 = 0               {product}           
     intx G1RSetUpdatingPauseTimePercent            = 10              {product}           
     intx G1RefProcDrainInterval                    = 10              {product}           
    uintx G1ReservePercent                          = 10              {product}           
    uintx G1SATBBufferEnqueueingThresholdPercent    = 60              {product}           
     intx G1SATBBufferSize                          = 1024            {product}           
     bool G1SummarizeConcMark                       = false           {diagnostic}        
     bool G1SummarizeRSetStats                      = false           {diagnostic}        
     intx G1SummarizeRSetStatsPeriod                = 0               {diagnostic}        
     bool G1TraceConcRefinement                     = false           {diagnostic}        
     intx G1UpdateBufferSize                        = 256             {product}           
     bool G1UseAdaptiveConcRefinement               = true            {product}           
    uintx GCDrainStackTargetSize                    = 64              {product}           
    uintx GCHeapFreeLimit                           = 2               {product}           
    uintx GCLockerEdenExpansionPercent              = 5               {product}           
     bool GCLockerInvokesConcurrent                 = false           {product}           
    uintx GCLogFileSize                             = 0               {product}           
     bool GCOverheadReporting                       = false           {product}           
     intx GCOverheadReportingPeriodMS               = 100             {product}           
     bool GCParallelVerificationEnabled             = true            {diagnostic}        
    uintx GCPauseIntervalMillis                     = 0               {product}           
    uintx GCTaskTimeStampEntries                    = 200             {product}           
    uintx GCTimeLimit                               = 98              {product}           
    uintx GCTimeRatio                               = 99              {product}           
     intx GuaranteedSafepointInterval               = 1000            {diagnostic}        
    ccstr HPILibPath                                =                 {product}           
    uintx HeapBaseMinAddress                        = 2147483648      {pd product}        
     bool HeapDumpAfterFullGC                       = false           {manageable}        
     bool HeapDumpBeforeFullGC                      = false           {manageable}        
     bool HeapDumpOnOutOfMemoryError                = false           {manageable}        
    ccstr HeapDumpPath                              =                 {manageable}        
    uintx HeapFirstMaximumCompactionCount           = 3               {product}           
    uintx HeapMaximumCompactionInterval             = 20              {product}           
    uintx HeapSizePerGCThread                       = 87241520        {product}           
     bool IgnoreUnrecognizedVMOptions               = false           {product}           
    uintx InitialCodeCacheSize                      = 2555904         {pd product}        
     bool InitialCompileFast                        = false           {diagnostic}        
     bool InitialCompileReallyFast                  = false           {diagnostic}        
    uintx InitialHeapSize                          := 78632640        {product}           
    uintx InitialRAMFraction                        = 64              {product}           
    uintx InitialSurvivorRatio                      = 8               {product}           
     intx InitialTenuringThreshold                  = 7               {product}           
    uintx InitiatingHeapOccupancyPercent            = 45              {product}           
     bool Inline                                    = true            {product}           
     intx InlineSmallCode                           = 1000            {pd product}        
     bool InsertMemBarAfterArraycopy                = true            {C2 product}        
     intx InteriorEntryAlignment                    = 16              {C2 pd product}     
     intx InterpreterProfilePercentage              = 33              {product}           
     bool JNIDetachReleasesMonitors                 = true            {product}           
     bool JavaMonitorsInStackTrace                  = true            {product}           
     intx JavaPriority10_To_OSPriority              = -1              {product}           
     intx JavaPriority1_To_OSPriority               = -1              {product}           
     intx JavaPriority2_To_OSPriority               = -1              {product}           
     intx JavaPriority3_To_OSPriority               = -1              {product}           
     intx JavaPriority4_To_OSPriority               = -1              {product}           
     intx JavaPriority5_To_OSPriority               = -1              {product}           
     intx JavaPriority6_To_OSPriority               = -1              {product}           
     intx JavaPriority7_To_OSPriority               = -1              {product}           
     intx JavaPriority8_To_OSPriority               = -1              {product}           
     intx JavaPriority9_To_OSPriority               = -1              {product}           
     bool LIRFillDelaySlots                         = false           {C1 pd product}     
    uintx LargePageHeapSizeThreshold                = 134217728       {product}           
    uintx LargePageSizeInBytes                      = 0               {product}           
     bool LazyBootClassLoader                       = true            {product}           
     bool LinkWellKnownClasses                      = false           {diagnostic}        
     bool LogCompilation                            = false           {diagnostic}        
     bool LogEvents                                 = true            {diagnostic}        
     intx LogEventsBufferEntries                    = 10              {diagnostic}        
    ccstr LogFile                                   =                 {diagnostic}        
     bool LogVMOutput                               = false           {diagnostic}        
     bool LoopLimitCheck                            = true            {C2 diagnostic}     
     intx LoopOptsCount                             = 43              {C2 product}        
     intx LoopUnrollLimit                           = 60              {C2 pd product}     
     intx LoopUnrollMin                             = 4               {C2 product}        
     bool LoopUnswitching                           = true            {C2 product}        
     intx MallocVerifyInterval                      = 0               {diagnostic}        
     intx MallocVerifyStart                         = 0               {diagnostic}        
     bool ManagementServer                          = false           {product}           
    uintx MarkStackSize                             = 4194304         {product}           
    uintx MarkStackSizeMax                          = 536870912       {product}           
     intx MarkSweepAlwaysCompactCount               = 4               {product}           
    uintx MarkSweepDeadRatio                        = 1               {product}           
     intx MaxBCEAEstimateLevel                      = 5               {product}           
     intx MaxBCEAEstimateSize                       = 150             {product}           
     intx MaxDirectMemorySize                       = -1              {product}           
     bool MaxFDLimit                                = true            {product}           
    uintx MaxGCMinorPauseMillis                     = 18446744073709551615{product}           
    uintx MaxGCPauseMillis                          = 18446744073709551615{product}           
    uintx MaxHeapFreeRatio                          = 70              {product}           
    uintx MaxHeapSize                              := 1258291200      {product}           
     intx MaxInlineLevel                            = 9               {product}           
     intx MaxInlineSize                             = 35              {product}           
     intx MaxJavaStackTraceDepth                    = 1024            {product}           
     intx MaxJumpTableSize                          = 65000           {C2 product}        
     intx MaxJumpTableSparseness                    = 5               {C2 product}        
     intx MaxLabelRootDepth                         = 1100            {C2 product}        
     intx MaxLoopPad                                = 11              {C2 product}        
    uintx MaxNewSize                                = 18446744073709486080{product}           
     intx MaxNodeLimit                              = 65000           {C2 product}        
    uintx MaxPermHeapExpansion                      = 5439488         {product}           
    uintx MaxPermSize                               = 85983232        {pd product}        
 uint64_t MaxRAM                                    = 137438953472    {pd product}        
    uintx MaxRAMFraction                            = 4               {product}           
     intx MaxRecursiveInlineLevel                   = 1               {product}           
     intx MaxTenuringThreshold                      = 15              {product}           
     intx MaxTrivialSize                            = 6               {product}           
     bool MethodFlushing                            = true            {product}           
     intx MethodHandlePushLimit                     = 3               {diagnostic}        
     intx MinCodeCacheFlushingInterval              = 30              {product}           
    uintx MinHeapDeltaBytes                         = 196608          {product}           
    uintx MinHeapFreeRatio                          = 40              {product}           
     intx MinInliningThreshold                      = 250             {product}           
     intx MinJumpTableSize                          = 18              {C2 product}        
    uintx MinPermHeapExpansion                      = 327680          {product}           
    uintx MinRAMFraction                            = 2               {product}           
    uintx MinSurvivorRatio                          = 3               {product}           
    uintx MinTLABSize                               = 2048            {product}           
     intx MonitorBound                              = 0               {product}           
     bool MonitorInUseLists                         = false           {product}           
     intx MultiArrayExpandLimit                     = 6               {C2 product}        
     bool MustCallLoadClassInternal                 = false           {product}           
     intx NUMAChunkResizeWeight                     = 20              {product}           
    uintx NUMAInterleaveGranularity                 = 2097152         {product}           
     intx NUMAPageScanRate                          = 256             {product}           
     intx NUMASpaceResizeRate                       = 1073741824      {product}           
     bool NUMAStats                                 = false           {product}           
     intx NativeMonitorFlags                        = 0               {product}           
     intx NativeMonitorSpinLimit                    = 20              {product}           
     intx NativeMonitorTimeout                      = -1              {product}           
     bool NeedsDeoptSuspend                         = false           {pd product}        
     bool NeverActAsServerClassMachine              = false           {pd product}        
     bool NeverTenure                               = false           {product}           
     intx NewRatio                                  = 2               {product}           
    uintx NewSize                                   = 1310720         {product}           
    uintx NewSizeThreadIncrease                     = 5320            {pd product}        
     intx NmethodSweepCheckInterval                 = 5               {product}           
     intx NmethodSweepFraction                      = 16              {product}           
     intx NodeLimitFudgeFactor                      = 1000            {C2 product}        
    uintx NumberOfGCLogFiles                        = 0               {product}           
     intx NumberOfLoopInstrToAlign                  = 4               {C2 product}        
     intx ObjectAlignmentInBytes                    = 8               {lp64_product}      
    uintx OldPLABSize                               = 1024            {product}           
    uintx OldPLABWeight                             = 50              {product}           
    uintx OldSize                                   = 5439488         {product}           
     bool OmitStackTraceInFastThrow                 = true            {product}           
ccstrlist OnError                                   =                 {product}           
ccstrlist OnOutOfMemoryError                        =                 {product}           
     intx OnStackReplacePercentage                  = 140             {pd product}        
     bool OptimizeFill                              = true            {C2 product}        
     bool OptimizeMethodHandles                     = true            {diagnostic}        
     bool OptimizePtrCompare                        = true            {C2 product}        
     bool OptimizeStringConcat                      = true            {C2 product}        
     bool OptoBundling                              = false           {C2 pd product}     
     intx OptoLoopAlignment                         = 16              {pd product}        
     bool OptoScheduling                            = false           {C2 pd product}     
    uintx PLABWeight                                = 75              {product}           
     bool PSChunkLargeArrays                        = true            {product}           
     intx ParGCArrayScanChunk                       = 50              {product}           
     intx ParGCCardsPerStrideChunk                  = 256             {diagnostic}        
    uintx ParGCDesiredObjsFromOverflowList          = 20              {product}           
    uintx ParGCStridesPerThread                     = 2               {diagnostic}        
     bool ParGCTrimOverflow                         = true            {product}           
     bool ParGCUseLocalOverflow                     = false           {product}           
     intx ParallelGCBufferWastePct                  = 10              {product}           
     bool ParallelGCRetainPLAB                      = false           {diagnostic}        
    uintx ParallelGCThreads                         = 4               {product}           
     bool ParallelGCVerbose                         = false           {product}           
    uintx ParallelOldDeadWoodLimiterMean            = 50              {product}           
    uintx ParallelOldDeadWoodLimiterStdDev          = 80              {product}           
     bool ParallelRefProcBalancingEnabled           = true            {product}           
     bool ParallelRefProcEnabled                    = false           {product}           
     bool PartialPeelAtUnsignedTests                = true            {C2 product}        
     bool PartialPeelLoop                           = true            {C2 product}        
     intx PartialPeelNewPhiDelta                    = 0               {C2 product}        
     bool PauseAtExit                               = false           {diagnostic}        
     bool PauseAtStartup                            = false           {diagnostic}        
    ccstr PauseAtStartupFile                        =                 {diagnostic}        
    uintx PausePadding                              = 1               {product}           
     intx PerBytecodeRecompilationCutoff            = 200             {product}           
     intx PerBytecodeTrapLimit                      = 4               {product}           
     intx PerMethodRecompilationCutoff              = 400             {product}           
     intx PerMethodTrapLimit                        = 100             {product}           
     bool PerfAllowAtExitRegistration               = false           {product}           
     bool PerfBypassFileSystemCheck                 = false           {product}           
     intx PerfDataMemorySize                        = 32768           {product}           
     intx PerfDataSamplingInterval                  = 50              {product}           
    ccstr PerfDataSaveFile                          =                 {product}           
     bool PerfDataSaveToFile                        = false           {product}           
     bool PerfDisableSharedMem                      = false           {product}           
     intx PerfMaxStringConstLength                  = 1024            {product}           
    uintx PermGenPadding                            = 3               {product}           
    uintx PermMarkSweepDeadRatio                    = 5               {product}           
    uintx PermSize                                  = 21757952        {pd product}        
     bool PostSpinYield                             = true            {product}           
     intx PreBlockSpin                              = 10              {product}           
     intx PreInflateSpin                            = 10              {pd product}        
     bool PreSpinYield                              = false           {product}           
     bool PreferInterpreterNativeStubs              = false           {pd product}        
     intx PrefetchCopyIntervalInBytes               = 576             {product}           
     intx PrefetchFieldsAhead                       = 1               {product}           
     intx PrefetchScanIntervalInBytes               = 576             {product}           
     bool PreserveAllAnnotations                    = false           {product}           
    uintx PreserveMarkStackSize                     = 1024            {product}           
    uintx PretenureSizeThreshold                    = 0               {product}           
     bool PrintAdapterHandlers                      = false           {diagnostic}        
     bool PrintAdaptiveSizePolicy                   = false           {product}           
     bool PrintAssembly                             = false           {diagnostic}        
    ccstr PrintAssemblyOptions                      =                 {diagnostic}        
     bool PrintBiasedLockingStatistics              = false           {diagnostic}        
     bool PrintCMSInitiationStatistics              = false           {product}           
     intx PrintCMSStatistics                        = 0               {product}           
     bool PrintClassHistogram                       = false           {manageable}        
     bool PrintClassHistogramAfterFullGC            = false           {manageable}        
     bool PrintClassHistogramBeforeFullGC           = false           {manageable}        
     bool PrintCommandLineFlags                     = false           {product}           
     bool PrintCompilation                          = false           {product}           
     bool PrintCompilation2                         = false           {diagnostic}        
     bool PrintCompressedOopsMode                   = false           {diagnostic}        
     bool PrintConcurrentLocks                      = false           {manageable}        
     bool PrintDTraceDOF                            = false           {diagnostic}        
     intx PrintFLSCensus                            = 0               {product}           
     intx PrintFLSStatistics                        = 0               {product}           
     bool PrintFlagsFinal                          := true            {product}           
     bool PrintFlagsInitial                         = false           {product}           
     bool PrintGC                                   = false           {manageable}        
     bool PrintGCApplicationConcurrentTime          = false           {product}           
     bool PrintGCApplicationStoppedTime             = false           {product}           
     bool PrintGCDateStamps                         = false           {manageable}        
     bool PrintGCDetails                            = false           {manageable}        
     bool PrintGCTaskTimeStamps                     = false           {product}           
     bool PrintGCTimeStamps                         = false           {manageable}        
     bool PrintHeapAtGC                             = false           {product rw}        
     bool PrintHeapAtGCExtended                     = false           {product rw}        
     bool PrintHeapAtSIGBREAK                       = true            {product}           
     bool PrintInlining                             = false           {diagnostic}        
     bool PrintInterpreter                          = false           {diagnostic}        
     bool PrintIntrinsics                           = false           {diagnostic}        
     bool PrintJNIGCStalls                          = false           {product}           
     bool PrintJNIResolving                         = false           {product}           
     bool PrintMethodHandleStubs                    = false           {diagnostic}        
     bool PrintNMethods                             = false           {diagnostic}        
     bool PrintNativeNMethods                       = false           {diagnostic}        
     bool PrintOldPLAB                              = false           {product}           
     bool PrintOopAddress                           = false           {product}           
     bool PrintPLAB                                 = false           {product}           
     bool PrintParallelOldGCPhaseTimes              = false           {product}           
     bool PrintPreciseBiasedLockingStatistics       = false           {C2 diagnostic}     
     bool PrintPromotionFailure                     = false           {product}           
     bool PrintReferenceGC                          = false           {product}           
     bool PrintRevisitStats                         = false           {product}           
     bool PrintSafepointStatistics                  = false           {product}           
     intx PrintSafepointStatisticsCount             = 300             {product}           
     intx PrintSafepointStatisticsTimeout           = -1              {product}           
     bool PrintSharedSpaces                         = false           {product}           
     bool PrintSignatureHandlers                    = false           {diagnostic}        
     bool PrintStringTableStatistics                = false           {product}           
     bool PrintStubCode                             = false           {diagnostic}        
     bool PrintTLAB                                 = false           {product}           
     bool PrintTenuringDistribution                 = false           {product}           
     bool PrintTieredEvents                         = false           {product}           
     bool PrintVMOptions                            = false           {product}           
     bool PrintVMQWaitTime                          = false           {product}           
     bool PrintWarnings                             = true            {product}           
    uintx ProcessDistributionStride                 = 4               {product}           
     bool ProfileDynamicTypes                       = true            {diagnostic}        
     bool ProfileInterpreter                        = true            {pd product}        
     bool ProfileIntervals                          = false           {product}           
     intx ProfileIntervalsTicks                     = 100             {product}           
     intx ProfileMaturityPercentage                 = 20              {product}           
     bool ProfileVM                                 = false           {product}           
     bool ProfilerPrintByteCodeStatistics           = false           {product}           
     bool ProfilerRecordPC                          = false           {product}           
    uintx PromotedPadding                           = 3               {product}           
     intx QueuedAllocationWarningCount              = 0               {product}           
     bool RangeCheckElimination                     = true            {product}           
     bool RangeLimitCheck                           = true            {C2 diagnostic}     
     intx ReadPrefetchInstr                         = 0               {product}           
     intx ReadSpinIterations                        = 100             {product}           
     bool ReassociateInvariants                     = true            {C2 product}        
     bool ReduceBulkZeroing                         = true            {C2 product}        
     bool ReduceFieldZeroing                        = true            {C2 product}        
     bool ReduceInitialCardMarks                    = true            {C2 product}        
     bool ReduceSignalUsage                         = false           {product}           
     intx RefDiscoveryPolicy                        = 0               {product}           
     bool ReflectionWrapResolutionErrors            = true            {product}           
     bool RegisterFinalizersAtInit                  = true            {product}           
     bool RelaxAccessControlCheck                   = false           {product}           
     bool RequireSharedSpaces                       = false           {product}           
    uintx ReservedCodeCacheSize                     = 50331648        {pd product}        
     bool ResizeOldPLAB                             = true            {product}           
     bool ResizePLAB                                = true            {product}           
     bool ResizeTLAB                                = true            {pd product}        
     bool RestoreMXCSROnJNICalls                    = false           {product}           
     bool RewriteBytecodes                          = true            {pd product}        
     bool RewriteFrequentPairs                      = true            {pd product}        
     intx SafepointPollOffset                       = 256             {C1 pd product}     
     intx SafepointSpinBeforeYield                  = 2000            {product}           
     bool SafepointTimeout                          = false           {product}           
     intx SafepointTimeoutDelay                     = 10000           {product}           
     bool ScavengeBeforeFullGC                      = true            {product}           
     intx ScavengeRootsInCode                       = 2               {diagnostic}        
     intx SelfDestructTimer                         = 0               {product}           
     bool SerializeVMOutput                         = true            {diagnostic}        
    uintx SharedDummyBlockSize                      = 536870912       {product}           
    uintx SharedMiscCodeSize                        = 4194304         {product}           
    uintx SharedMiscDataSize                        = 6291456         {product}           
     bool SharedOptimizeColdStart                   = true            {diagnostic}        
    uintx SharedReadOnlySize                        = 10485760        {product}           
    uintx SharedReadWriteSize                       = 14680064        {product}           
     bool SharedSkipVerify                          = false           {diagnostic}        
     bool ShowMessageBoxOnError                     = false           {product}           
     intx SoftRefLRUPolicyMSPerMB                   = 1000            {product}           
     bool SplitIfBlocks                             = true            {product}           
     intx StackRedPages                             = 1               {pd product}        
     intx StackShadowPages                          = 20              {pd product}        
     bool StackTraceInThrowable                     = true            {product}           
     intx StackYellowPages                          = 2               {pd product}        
     bool StartAttachListener                       = false           {product}           
     intx StarvationMonitorInterval                 = 200             {product}           
     bool StressLdcRewrite                          = false           {product}           
     bool StressTieredRuntime                       = false           {product}           
    uintx StringTableSize                           = 1009            {product}           
     bool SuppressFatalErrorMessage                 = false           {product}           
    uintx SurvivorPadding                           = 3               {product}           
     intx SurvivorRatio                             = 8               {product}           
     intx SuspendRetryCount                         = 50              {product}           
     intx SuspendRetryDelay                         = 5               {product}           
     intx SyncFlags                                 = 0               {product}           
    ccstr SyncKnobs                                 =                 {product}           
     intx SyncVerbose                               = 0               {product}           
    uintx TLABAllocationWeight                      = 35              {product}           
    uintx TLABRefillWasteFraction                   = 64              {product}           
    uintx TLABSize                                  = 0               {product}           
     bool TLABStats                                 = true            {product}           
    uintx TLABWasteIncrement                        = 4               {product}           
    uintx TLABWasteTargetPercent                    = 1               {product}           
     intx TargetPLABWastePct                        = 10              {product}           
     intx TargetSurvivorRatio                       = 50              {product}           
    uintx TenuredGenerationSizeIncrement            = 20              {product}           
    uintx TenuredGenerationSizeSupplement           = 80              {product}           
    uintx TenuredGenerationSizeSupplementDecay      = 2               {product}           
     intx ThreadPriorityPolicy                      = 0               {product}           
     bool ThreadPriorityVerbose                     = false           {product}           
    uintx ThreadSafetyMargin                        = 52428800        {product}           
     intx ThreadStackSize                           = 1024            {pd product}        
    uintx ThresholdTolerance                        = 10              {product}           
     intx Tier0BackedgeNotifyFreqLog                = 10              {product}           
     intx Tier0InvokeNotifyFreqLog                  = 7               {product}           
     intx Tier0ProfilingStartPercentage             = 200             {product}           
     intx Tier1FreqInlineSize                       = 35              {C2 product}        
     intx Tier1Inline                               = 0               {C2 product}        
     intx Tier1LoopOptsCount                        = 0               {C2 product}        
     intx Tier1MaxInlineSize                        = 8               {C2 product}        
     intx Tier23InlineeNotifyFreqLog                = 20              {product}           
     intx Tier2BackEdgeThreshold                    = 0               {product}           
     intx Tier2BackedgeNotifyFreqLog                = 14              {product}           
     intx Tier2CompileThreshold                     = 0               {product}           
     intx Tier2InvokeNotifyFreqLog                  = 11              {product}           
     intx Tier3BackEdgeThreshold                    = 60000           {product}           
     intx Tier3BackedgeNotifyFreqLog                = 13              {product}           
     intx Tier3CompileThreshold                     = 2000            {product}           
     intx Tier3DelayOff                             = 2               {product}           
     intx Tier3DelayOn                              = 5               {product}           
     intx Tier3InvocationThreshold                  = 200             {product}           
     intx Tier3InvokeNotifyFreqLog                  = 10              {product}           
     intx Tier3LoadFeedback                         = 5               {product}           
     intx Tier3MinInvocationThreshold               = 100             {product}           
     intx Tier4BackEdgeThreshold                    = 40000           {product}           
     intx Tier4CompileThreshold                     = 15000           {product}           
     intx Tier4InvocationThreshold                  = 5000            {product}           
     intx Tier4LoadFeedback                         = 3               {product}           
     intx Tier4MinInvocationThreshold               = 600             {product}           
     bool TieredCompilation                         = false           {pd product}        
     intx TieredCompileTaskTimeout                  = 50              {product}           
     intx TieredRateUpdateMaxTime                   = 25              {product}           
     intx TieredRateUpdateMinTime                   = 1               {product}           
     intx TieredStopAtLevel                         = 4               {product}           
     bool TimeLinearScan                            = false           {C1 product}        
     bool TraceBiasedLocking                        = false           {product}           
     bool TraceClassLoading                         = false           {product rw}        
     bool TraceClassLoadingPreorder                 = false           {product}           
     bool TraceClassResolution                      = false           {product}           
     bool TraceClassUnloading                       = false           {product rw}        
     bool TraceCompileTriggered                     = false           {diagnostic}        
     bool TraceDynamicGCThreads                     = false           {product}           
     bool TraceGCTaskThread                         = false           {diagnostic}        
     bool TraceGen0Time                             = false           {product}           
     bool TraceGen1Time                             = false           {product}           
    ccstr TraceJVMTI                                =                 {product}           
     bool TraceJVMTIObjectTagging                   = false           {diagnostic}        
     bool TraceLoaderConstraints                    = false           {product rw}        
     bool TraceMonitorInflation                     = false           {product}           
     bool TraceNMethodInstalls                      = false           {diagnostic}        
     bool TraceOSRBreakpoint                        = false           {diagnostic}        
     bool TraceParallelOldGCTasks                   = false           {product}           
     intx TraceRedefineClasses                      = 0               {product}           
     bool TraceRedundantCompiles                    = false           {diagnostic}        
     bool TraceSafepointCleanupTime                 = false           {product}           
     bool TraceSuperWord                            = false           {C2 product}        
     bool TraceSuspendWaitFailures                  = false           {product}           
     bool TraceTriggers                             = false           {diagnostic}        
     intx TrackedInitializationLimit                = 50              {C2 product}        
     bool TransmitErrorReport                       = false           {product}           
     intx TypeProfileMajorReceiverPercent           = 90              {product}           
     intx TypeProfileWidth                          = 2               {product}           
     intx UnguardOnExecutionViolation               = 0               {product}           
     bool UnlinkSymbolsALot                         = false           {product}           
     bool UnlockDiagnosticVMOptions                := true            {diagnostic}        
     bool UnrollLimitCheck                          = true            {C2 diagnostic}     
     bool UnsyncloadClass                           = false           {diagnostic}        
     bool Use486InstrsOnly                          = false           {product}           
     intx UseAVX                                    = 0               {product}           
     bool UseAdaptiveGCBoundary                     = false           {product}           
     bool UseAdaptiveGenerationSizePolicyAtMajorCollection  = true            {product}           
     bool UseAdaptiveGenerationSizePolicyAtMinorCollection  = true            {product}           
     bool UseAdaptiveNUMAChunkSizing                = true            {product}           
     bool UseAdaptiveSizeDecayMajorGCCost           = true            {product}           
     bool UseAdaptiveSizePolicy                     = true            {product}           
     bool UseAdaptiveSizePolicyFootprintGoal        = true            {product}           
     bool UseAdaptiveSizePolicyWithSystemGC         = false           {product}           
     bool UseAddressNop                             = true            {product}           
     bool UseAltSigs                                = false           {product}           
     bool UseAutoGCSelectPolicy                     = false           {product}           
     bool UseBiasedLocking                          = true            {product}           
     bool UseBimorphicInlining                      = true            {C2 product}        
     bool UseBlockCopy                              = false           {product}           
     bool UseBlockZeroing                           = false           {product}           
     bool UseBoundThreads                           = true            {product}           
     bool UseBsdPosixThreadCPUClocks                = true            {product}           
     bool UseCBCond                                 = false           {product}           
     bool UseCMSBestFit                             = true            {product}           
     bool UseCMSCollectionPassing                   = true            {product}           
     bool UseCMSCompactAtFullCollection             = true            {product}           
     bool UseCMSInitiatingOccupancyOnly             = false           {product}           
     bool UseCodeCacheFlushing                      = true            {product}           
     bool UseCompiler                               = true            {product}           
     bool UseCompilerSafepoints                     = true            {product}           
     bool UseCompressedOops                        := true            {lp64_product}      
     bool UseConcMarkSweepGC                        = false           {product}           
     bool UseCondCardMark                           = false           {product}           
     bool UseCountLeadingZerosInstruction           = false           {product}           
     bool UseCounterDecay                           = true            {product}           
     bool UseDivMod                                 = true            {C2 product}        
     bool UseDynamicNumberOfGCThreads               = false           {product}           
     bool UseFPUForSpilling                         = false           {C2 product}        
     bool UseFastAccessorMethods                    = false           {product}           
     bool UseFastEmptyMethods                       = false           {product}           
     bool UseFastJNIAccessors                       = true            {product}           
     bool UseG1GC                                   = false           {product}           
     bool UseGCLogFileRotation                      = false           {product}           
     bool UseGCOverheadLimit                        = true            {product}           
     bool UseGCTaskAffinity                         = false           {product}           
     bool UseHeavyMonitors                          = false           {product}           
     bool UseHugeTLBFS                              = false           {product}           
     bool UseIncDec                                 = true            {diagnostic}        
     bool UseInlineCaches                           = true            {product}           
     bool UseInterpreter                            = true            {product}           
     bool UseJumpTables                             = true            {C2 product}        
     bool UseLWPSynchronization                     = true            {product}           
     bool UseLargePages                             = false           {pd product}        
     bool UseLargePagesIndividualAllocation         = false           {pd product}        
     bool UseLoopCounter                            = true            {product}           
     bool UseLoopPredicate                          = true            {C2 product}        
     bool UseMaximumCompactionOnSystemGC            = true            {product}           
     bool UseMembar                                 = true            {pd product}        
     bool UseNUMA                                   = false           {product}           
     bool UseNUMAInterleaving                       = false           {product}           
     bool UseNewCode                                = false           {diagnostic}        
     bool UseNewCode2                               = false           {diagnostic}        
     bool UseNewCode3                               = false           {diagnostic}        
     bool UseNewLongLShift                          = false           {product}           
     bool UseNiagaraInstrs                          = false           {product}           
     bool UseOSErrorReporting                       = false           {pd product}        
     bool UseOldInlining                            = true            {C2 product}        
     bool UseOnStackReplacement                     = true            {pd product}        
     bool UseOnlyInlinedBimorphic                   = true            {C2 product}        
     bool UseOprofile                               = false           {product}           
     bool UseOptoBiasInlining                       = true            {C2 product}        
     bool UsePPCLWSYNC                              = true            {product}           
     bool UsePSAdaptiveSurvivorSizePolicy           = true            {product}           
     bool UseParNewGC                               = false           {product}           
     bool UseParallelGC                            := true            {product}           
     bool UseParallelOldGC                          = true            {product}           
     bool UsePerfData                               = true            {product}           
     bool UsePopCountInstruction                    = true            {product}           
     bool UseRDPCForConstantTableBase               = false           {C2 product}        
     bool UseSHM                                    = false           {product}           
     intx UseSSE                                    = 4               {product}           
     bool UseSSE42Intrinsics                        = true            {product}           
     bool UseSerialGC                               = false           {product}           
     bool UseSharedSpaces                           = false           {product}           
     bool UseSignalChaining                         = true            {product}           
     bool UseSpinning                               = false           {product}           
     bool UseSplitVerifier                          = true            {product}           
     bool UseStoreImmI16                            = false           {product}           
     bool UseStringCache                            = false           {product}           
     bool UseSuperWord                              = true            {C2 product}        
     bool UseTLAB                                   = true            {pd product}        
     bool UseThreadPriorities                       = true            {pd product}        
     bool UseTypeProfile                            = true            {product}           
     bool UseUnalignedLoadStores                    = false           {product}           
     intx UseVIS                                    = 99              {product}           
     bool UseVMInterruptibleIO                      = false           {product}           
     bool UseVectoredExceptions                     = false           {pd product}        
     bool UseXMMForArrayCopy                        = true            {product}           
     bool UseXmmI2D                                 = false           {product}           
     bool UseXmmI2F                                 = false           {product}           
     bool UseXmmLoadAndClearUpper                   = true            {product}           
     bool UseXmmRegToRegMoveAll                     = true            {product}           
     bool VMThreadHintNoPreempt                     = false           {product}           
     intx VMThreadPriority                          = -1              {product}           
     intx VMThreadStackSize                         = 1024            {pd product}        
     intx ValueMapInitialSize                       = 11              {C1 product}        
     intx ValueMapMaxLoopSize                       = 8               {C1 product}        
     intx ValueSearchLimit                          = 1000            {C2 product}        
     bool VerifyAfterGC                             = false           {diagnostic}        
     bool VerifyBeforeExit                          = false           {diagnostic}        
     bool VerifyBeforeGC                            = false           {diagnostic}        
     bool VerifyBeforeIteration                     = false           {diagnostic}        
     bool VerifyDuringGC                            = false           {diagnostic}        
     intx VerifyGCLevel                             = 0               {diagnostic}        
    uintx VerifyGCStartAt                           = 0               {diagnostic}        
     bool VerifyMergedCPBytecodes                   = true            {product}           
     bool VerifyMethodHandles                       = false           {diagnostic}        
     bool VerifyObjectStartArray                    = true            {diagnostic}        
     bool VerifyRememberedSets                      = false           {diagnostic}        
     intx WorkAroundNPTLTimedWaitHang               = 1               {product}           
    uintx YoungGenerationSizeIncrement              = 20              {product}           
    uintx YoungGenerationSizeSupplement             = 80              {product}           
    uintx YoungGenerationSizeSupplementDecay        = 8               {product}           
    uintx YoungPLABSize                             = 4096            {product}           
     bool ZeroTLAB                                  = false           {product}           
     intx hashCode                                  = 0               {product}           

Simon Ochsenreither

unread,
Dec 20, 2012, 10:06:17 AM12/20/12
to scala-i...@googlegroups.com
Hi Lukas,

I played with memory options at some point
Great! Knowing that it didnd't kelp (much) is also a valuable information. If the JIT compiler seems to be the bottleneck, we should really look at the JIT options next.

In general -XX:+AggressiveOpts, -XX:CompileThreshold, -XX:+UseFastAccessorMethods come to mind. Considering the compiler also works with a lot of text, -XX:+UseStringCache, -XX:+UseCompressedStrings and -XX:+OptimizeStringConcat could be interesting, too.
Interesting inlining options: -XX:InlineSmallCode, -XX:MaxInlineSize, -XX:FreqInlineSize and -XX:LoopUnrollLimit.

-XX:-PrintCompilation and -XX:+UnlockDiagnosticVMOptions wtih the appropriate PrintXXX opitons might help figuring out what the JIT does.


Bye,

Simon

Lukas Rytz

unread,
Dec 20, 2012, 10:09:45 AM12/20/12
to scala-i...@googlegroups.com
On Thu, Dec 20, 2012 at 4:05 PM, Paul Phillips <pa...@improving.org> wrote:

On Thu, Dec 20, 2012 at 6:46 AM, Simon Ochsenreither <simon.och...@gmail.com> wrote:
Would it make sense to try a similar approach to speed up scalac? Or did anyone already play with JVM options and discovered it wasn't worthwhile?

I've done it before, but not as exhaustively as the subject merits. (At the same time lukas did, actually.) There is a pretty enormous combination space of jvm options. I definitely think it's still a worthwhile thing to do, focusing on GC and JIT options.

The biggest dent you can make in compile times, last I checked, was -d32.

right, for me (os x, jdk1.6) -d32 is also very helpful, much more than compressedOops

Paul Phillips

unread,
Dec 20, 2012, 10:15:26 AM12/20/12
to scala-i...@googlegroups.com
On Thu, Dec 20, 2012 at 7:06 AM, Simon Ochsenreither <simon.och...@gmail.com> wrote:
XX:+UseStringCache, -XX:+UseCompressedStrings and -XX:+OptimizeStringConcat could be interesting, too.

I've tried all these, negligible if any result.
 
Interesting inlining options: -XX:InlineSmallCode, -XX:MaxInlineSize, -XX:FreqInlineSize and -XX:LoopUnrollLimit.

These you can have an impact with.
 
-XX:-PrintCompilation and -XX:+UnlockDiagnosticVMOptions wtih the appropriate PrintXXX opitons might help figuring out what the JIT does.

Since you're interested, here's something I was working on 4 months ago I never made it back to.


Actually I abandoned that one to take a more principled approach translating xml to data objects, but that one is an even less publishable state.

Erik Rozendaal

unread,
Dec 20, 2012, 10:32:14 AM12/20/12
to scala-i...@googlegroups.com
What helped a lot for me with JDK7 on Mac OS X using maven (before Zinc arrived) was -XX:+TieredCompilation -XX:CICompilerCount=1. This could cut compile time by 30-50% (since the maven build forks a new scala compiler for each compile step). 

Using -XX:+UseParallelGC also helped a little bit.

Using the new maven plugin zinc support is faster still, after the compiler warms up.

Regards,
Erik

Paul Phillips

unread,
Dec 20, 2012, 10:48:43 AM12/20/12
to scala-i...@googlegroups.com


On Thu, Dec 20, 2012 at 7:32 AM, Erik Rozendaal <er...@deler.org> wrote:
What helped a lot for me with JDK7 on Mac OS X using maven (before Zinc arrived) was -XX:+TieredCompilation -XX:CICompilerCount=1. This could cut compile time by 30-50% (since the maven build forks a new scala compiler for each compile step). 

Oh yeah, I forgot to mention my standard ant options.

ANT_OPTS="-Xmx3g -Xms3g -XX:+TieredCompilation -XX:ReservedCodeCacheSize=256m -XX:MaxPermSize=384m -XX:+UseNUMA -XX:+UseParallelGC"
Reply all
Reply to author
Forward
0 new messages