sun™ faster java™ applications: tech days how to tune the...
TRANSCRIPT
![Page 1: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/1.jpg)
Sun™TechDaysFaster Java™ Applications:
How To Tune TheHotSpot™ Virtual MachineSimon RitterTechnology Evangelist
Sun™ Tech Days
![Page 2: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/2.jpg)
Sun™TechDays
Agenda
Profile of JVM workload
HotSpot™ VM internal architecture
Garbage collection
General HotSpot™ performance tuning
Tuning HotSpot™ for application servers
Further Information
![Page 3: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/3.jpg)
Sun™TechDaysJVM Workload
Server-side applications Client-side applications
ThreadSynchronization
Waiting for Native
Windowing Code
Bytecode Execution
Other
MemoryMgmt.
Bytecode Execution
MemoryMgmt.
Other
![Page 4: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/4.jpg)
Sun™TechDaysHotSpot™ Major Features
Fast thread synchronization Adaptive compilation Generational garbage collector
![Page 5: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/5.jpg)
Sun™TechDaysMemory Model
Handleless objects
Two-word object headers
Reflective data as objects
Native thread support
![Page 6: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/6.jpg)
Sun™TechDaysAdaptive Compilation
ProgramSource
JavaC Bytecodes
DynamicCompiler
NativeMachine
Code
VirtualMachine
Profiler
Control
HotSpot™
Class File Identical For All
VMs
Compiled Machine Code Changes During Lifetime of Application
Aggressive InliningLoop unrolling
![Page 7: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/7.jpg)
Sun™TechDaysObjects Need Storage Space
Age old problems How to allocate space efficiently
How to reclaim unused space (garbage) efficiently and reliably
C (malloc and free)
C++ (new and delete)
Java™ (new and Garbage Collection)
![Page 8: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/8.jpg)
Sun™TechDaysGC Responsibilities
Garbage detection Distinguish live objects from garbage
Reference counting
Cyclic reference problem
Garbage reclamation Make space available to the running
program again
![Page 9: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/9.jpg)
Sun™TechDaysObject Lifetimes
Most objects are very short lived 80-98% of all newly allocated objects
die within a few million instructions
80-98% of all newly allocated objects die before another megabyte has been allocated
This impacts heavily on choices for GC algorithms
![Page 10: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/10.jpg)
Sun™TechDaysCollector Algorithms
Copying
Mark - Sweep
Mark - Compact
Incremental
Generational
Parallel Copy
Concurrent
Parallel Scavenge
![Page 11: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/11.jpg)
Sun™TechDaysCopying GC
From space To space
Before
After
RootSet
To spaceFrom space
![Page 12: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/12.jpg)
Sun™TechDaysCopying GC
Stop-the-world collector
Very Efficient Traverses object list and copies objects in
a single cycle
Simultaneous detection and reclamation
GC pause is directly proportional to total size of live objects Bigger semi-spaces improve efficiency
Less frequent GC, more dead objects
![Page 13: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/13.jpg)
Sun™TechDaysMark – Sweep GC
Stop-the-world collector
Distinguish live objects from garbage Traverse graph of pointer relationships
Mark objects that can be reached
Reclaim the space Heap space is “swept” for marked areas
Free space is added to a free list, ready for use
![Page 14: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/14.jpg)
Sun™TechDaysMark – Sweep Problems
Different-sized objects cause fragmentation Multiple free lists for different-sized blocks
Cost of collection proportional to size of heap Not just live objects
Locality of reference New objects get interleaved with old objects
Bad for VM-based operating systems
![Page 15: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/15.jpg)
Sun™TechDaysMark – Compact GC
Before
After
x
xx
![Page 16: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/16.jpg)
Sun™TechDaysMark – Compact GC
Eliminates fragmentation issue of Mark-Sweep
Allocation becomes stack-based
Order of objects maintained Locality of reference
Requires multiple passes to complete Mark live objects
Compute new location
Update pointers
![Page 17: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/17.jpg)
Sun™TechDaysIncremental GC
Stop-the-world impacts performance Big heap, big pauses (00's – 000's ms)
Interleave units of GC work with application work
Problem is that references change while GC runs Get floating garbage
![Page 18: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/18.jpg)
Sun™TechDaysGenerational GC
Old objects tend to live for a long time GC can spend lots of time analysing and
copying the same objects
Generational GC divides heap into multiple areas (generations) Objects segregated by age New objects die more quickly, GC more
frequent Older generations collected less frequently Different generations use different algorithms
![Page 19: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/19.jpg)
Sun™TechDaysHotSpot™ VM Heap Layout
Tenured Space
Permanent Space
Permanent Generation
Old Generation
Young Generation
Eden Space From Space
To Space
Survivor Ratio(2Mb default) (64Kb default)
(5Mb min, 44Mb max default)
(4Mb default)
![Page 20: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/20.jpg)
Sun™TechDaysYoung Generation Heap Size
Eden = NewSize –
((NewSize / (SurvivorRatio + 2)) * 2)
From Space = (NewSize – Eden / 2)
To Space = (NewSize – Eden) / 2)
-XX:NewSize
-XX:MaxNewSize
-XX:NewRatio
-XX:SurvivorRatio
![Page 21: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/21.jpg)
Sun™TechDaysOld Generation Heap Size
Tenured generation Objects with long lifetime
-Xms
-Xmx
-XX:MinHeapFreeRatio
-XX:MaxHeapFreeRatio
![Page 22: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/22.jpg)
Sun™TechDaysPermanent Heap Size
Used to hold class files
Default size is 4Mb
-XX:PermSize
-XX:MaxPermSize
-Xnoclassgc
![Page 23: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/23.jpg)
Sun™TechDaysParallel Copy GC
Similar to copy-collector Still stop-the-world
Allocates as many threads as CPUs Algorithm optimized to minimize contention
Maximize work throughput Work stealing
![Page 24: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/24.jpg)
Sun™TechDaysParallel Copy GC
Single ThreadedStop-the-world
collector
Parallel, multi-threadedStop-the-world
young generation collector
ApplicationThreads
GCThread(s)
![Page 25: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/25.jpg)
Sun™TechDaysParallel Copy Collector
-XX:+UseParNewGC Default copy collector will be used
on single CPU machines
-XX:ParallelGCThreads=<num> Default is number of CPUs
Can be used to force the parallel copy collector to be used on single a CPU machine
![Page 26: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/26.jpg)
Sun™TechDaysConcurrent GC
ApplicationThreads
Stop-the-world initial mark phase
Concurrent mark phase
Stop-the-world re-mark phase
Concurrent sweep phase
-XX:+UseConcMarkSweepGC
![Page 27: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/27.jpg)
Sun™TechDaysParallel Scavenge GC
Stop-the-world
Similar to parallel-copy collector
Aimed at large young spaces (12-80Gb)
Scales well with more CPUs
Adaptive tuning policy Survivor ratio
Promotion undo to prevent out of memory
![Page 28: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/28.jpg)
Sun™TechDaysParallel Scavenge Collector
-XX:+UseParallelGC
-XX:ParallelGCThreads=<num> Control number of threads
-XX:+UseAdaptiveSizePolicy Automatically sizes the young generation and
selects optimum survivor ratio
![Page 29: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/29.jpg)
Sun™TechDaysFactors Affecting GC
Rate of object creation
Object life spans Temporary, intermediate, long
Types of object Size, complexity
Relationships between objects Difficulty of determining and tracking object
references
![Page 30: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/30.jpg)
Sun™TechDaysBasic Approach To Tuning
Profile, profile, profile!
Use profile data to determine factors affecting performance
Modify parameters to optimize performance
Repeat
![Page 31: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/31.jpg)
Sun™TechDaysProfiling GC
Simplest approach
-verbose:gc
-Xrunhprof
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC Warning: very verbose
![Page 32: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/32.jpg)
Sun™TechDaysQuick Performance Fix
Always upgrade to the latest version of the JDK/JRE Sun is always working to improve
performance
Sun is always working to reduce the number of 'undocumented features'
![Page 33: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/33.jpg)
Sun™TechDaysPerformance Example
Changed implementation of AggressiveHeap option
![Page 34: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/34.jpg)
Sun™TechDaysObject Lifetimes
Temporary Die before encountering a young GC
Intermediate Die before being tenured to old space
Long Get promoted to old heap space
Ratio of these has big impact on heap layout
![Page 35: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/35.jpg)
Sun™TechDaysReducing Object Lifetimes
Code inspection Remove references when not required
Can do this explicitly with
objectRef = null;
Avoid creating objects Intermediate objects silently created when
immutable object values change
![Page 36: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/36.jpg)
Sun™TechDaysObject Pooling
Can be good for heavy weight objects Database connections/threads
Reduce frequency of young GC
Can also be bad Pooling can be more expensive than
creation/collection
Can violate good OO design principles
![Page 37: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/37.jpg)
Sun™TechDaysDisabling Tenuring
Promote all live objects No tenuring of objects in survivor spaces
Good for apps with few intermediate objects
-XX:MaxTenuringThreshold=0 Number of times an object is copied in the
survivor spaces
-XX:SurvivorRatio=100 Ensures all of young generation is allocated to
the eden space
![Page 38: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/38.jpg)
Sun™TechDaysHelping The GC
Reduce state Objects die before leaving eden
Avoid references that span heaps More work required to trace links between
young and old spaces
Flatten objects Complex structures require additional work
to determine live objects
![Page 39: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/39.jpg)
Sun™TechDaysHeap Sizing
Extremely important to GC performance
Factors to consider Young GC frequency/collection time
Ratio and number of short, intermediate and long life objects
Promotion size
Old GC frequency/collection times
Old heap fragmentation/locality problems
![Page 40: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/40.jpg)
Sun™TechDaysSizing The Young Heap
Fragmentation is not an issue Locality of reference could be
Maximize collection of temporary objects Reduces promotion & tenuring
Minimize frequency of GC
Rule of thumb: make it as large as possible Given acceptable collection times
![Page 41: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/41.jpg)
Sun™TechDaysSizing the Old Heap
Ensure heap fits in physical memory Paging and locality of reference issues
larger young heap, smaller old heap
Undersized heap can lead to fragmentation
Oversized heap increases collection times Locality of reference problems
Use ISM and Variable page sizes to alleviate
![Page 42: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/42.jpg)
Sun™TechDaysIntimate Shared Memory
Designed for use on big memory Solaris machines Don't use if memory requirements will cause paging
JDK1.3.1 introduced support for heaps > 2Gb
ISM uses larger page sizes (4Mb rather than 8Kb)
Locks pages into memory (no paging to disk)
-XX:+UseISM (Solaris Only)
-XX:+UsePermISM (Solaris Only)
-XX:+UseMPSS (Solaris 9 Only)
Need to change shm parameters in /etc/system
![Page 43: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/43.jpg)
Sun™TechDaysAggressive Heap
-XX:+UseAgressiveHeap Must have min of 256MB RAM
Overall heap will be around 3850Mb
Thread allocation area 256MB
GC deferred as long as possible
Do not use -Xms or -Xmx with this
May cause stack space to run out Use -Xss to compensate
Not suited to multi-app servers
![Page 44: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/44.jpg)
Sun™TechDaysHotSpot™ Thread Options
-XboundThreads *
-XX:+UseThreadPriorities
-XX:+UseLWPSynchronisation **
-XX:+AdjustConcurrency *
* Solaris Only
** SPARC Only
![Page 45: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/45.jpg)
Sun™TechDaysGeneral Tuning Advice
Allocate more memory to the JVM 64Mb default is often too small
Set -Xms and -Xmx to be the same Increases predictability, improves
startup time
Set Eden/Tenured space ratio Eden >50% is bad
Eden = 33%, Tenured = 66% seems to be good
![Page 46: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/46.jpg)
Sun™TechDaysConclusions
Understanding the virtual machine will help you tune performance
Use profiling tools to find bottlenecks
Adapt HotSpot™ parameters to your application
Always use the latest JRE
Sun is always improving Java™ performance
![Page 47: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/47.jpg)
Sun™TechDaysFurther Information
java.sun.com/blueprints/performance
java.sun.com/products/hotspot
research.sun.com/projects/jfluid
developers.sun.com/dev/coolstuff/jvmstat
Developer.java.sun.com/developer/technicalArticles/Programming/GCPortal
![Page 48: Sun™ Faster Java™ Applications: Tech Days How To Tune The ...radzisz/dydaktyka/2003_4/sun-sem/Hot… · Code Changes During Lifetime of Application Aggressive Inlining Loop unrolling](https://reader033.vdocument.in/reader033/viewer/2022042220/5ec5e9b3ed3a6867603dc660/html5/thumbnails/48.jpg)
Sun™TechDays
Q&A