java(1) java(1) java - Java java [options] classname [args] java [options] -jar filename [args] options classname filename Java(JAR)-jar args main() javaJavaJava Runtime Environment (JRE)main()publicstaticString public static void main(String[] args) javamain()javafx.application.ApplicationJavaFXApplicationinit()start(javafx.stage.Stage) java-jarJARMain-Class JRE3() JARmain() java o o o o JIT o o Java Virtual Machine (JVM)JRE Java HotSpotJVM-X Java HotSpotJVM-XX -XX(-XX:+OptionName)(-XX:-OptionName) (:)(=)()(KB)kK(MB)mM(GB)gG8GB8g8192m8388608k858993459201(25%0.25) JVM -agentlib:libname[=options] -agentlib:fooJVMLD_LIBRARY_PATH(OS XDYLD_LIBRARY_PATH)libfoo.so 320(HPROF)CPU -agentlib:hprof=cpu=samples,interval=20,depth=3 JVMJava(JDWP)8000 -agentlib:jdwp=transport=dt_socket,server=y,address=8000 o http://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.htmljava.lang.instrument o http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html#startingJVM -agentpath:pathname[=options] -agentlib -client Java HotSpot Client VM64Java SE Development Kit (JDK)Server JVM JVMhttp://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html -Dproperty=value propertyvaluevalue(: -Dfoo="foo bar") -d32 32326432 -d64 64646432 Java HotSpot Server VM64-d64-server-d64-client -disableassertions[:[packagename]...|:classname] -da[:[packagename]...|:classname] -disableassertions (-da)...packagename...classname -disableassertions (-da)()1-disablesystemassertions -enableassertions (-ea)com.wombat.fruitbat ()com.wombat.fruitbat.BrickbatMyClass java -ea:com.wombat.fruitbat... -da:com.wombat.fruitbat.Brickbat MyClass -disablesystemassertions -dsa -enableassertions[:[packagename]...|:classname] -ea[:[packagename]...|:classname] -enableassertions (-ea)...packagename...classname -enableassertions (-ea)()1-enablesystemassertions -disableassertions (-da)com.wombat.fruitbat ()com.wombat.fruitbat.BrickbatMyClass java -ea:com.wombat.fruitbat... -da:com.wombat.fruitbat.Brickbat MyClass -enablesystemassertions -esa -help -? JVMjava -jar filename JARfilenamepublic static void main(String[] args)Main-Class:classname1JAR -jarJAR JAR o jar(1) o http://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.htmlJava(JAR) o http://docs.oracle.com/javase/tutorial/deployment/jar/index.html : JAR -javaagent:jarpath[=options] JavaJavahttp://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.htmlJava APIjava.lang.instrument -jre-restrict-search JRE -no-jre-restrict-search JRE -server Java HotSpot Server VM64JDKServer VM JVMhttp://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html -showversion -version-versionJVM -splash:imgname imgnameimagessplash.gif -splash:images/splash.gif -verbose:class -verbose:gc (GC) -verbose:jni Java Native Interface (JNI) -version -showversion-showversionJVM -version:release java release: 1.x.0_u (xu)(+)(*)OR2/AND(&)JARJRE 6u13 (1.6.0_13)6u10 (1.6.0_10)JRE 6 -version:"1.6.0_13 1.6* & 1.6.0_10+" release JARJAR Java HotSpot -X -X -Xbatch JVM-Xbatch -XX:-BackgroundCompilation -Xbootclasspath:path JARZIP(:)JDK JRErt.jar -Xbootclasspath/a:path JARZIP(:) JRErt.jar -Xbootclasspath/p:path JARZIP(:) JRErt.jar -Xcheck:jni Java Native Interface (JNI)JNIJNIJVM -Xcomp VM(-client)1,000VM(-server)10,000-Xcomp -XX:CompileThreshold -Xdebug -Xdiag -Xfuture -Xint (JIT) -Xinternalversion -versionJVM -Xloggc:filename GCGC-verbose:gc-Xloggc-verbose:gc(java) : -Xloggc:garbage-collection.log -Xmaxjitcodesize=size JIT()kKmMgG48MB -Xmaxjitcodesize=48m -XX:ReservedCodeCacheSize -Xmixed -Xmnsize ()()kKmMgG GC41 256MB -Xmn256m -Xmn262144k -Xmn268435456 -Xmn-XX:NewSize-XX:MaxNewSize -Xmssize ()1MB1024kKmMgG 6MB -Xms6291456 -Xms6144k -Xms6m -Xmn-XX:NewSize -Xmxsize ()2MB1024kKmMgG-Xms-Xmxhttp://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/index.htmlJava SE HotSpot 80MB -Xmx83886080 -Xmx81920k -Xmx80m -Xmx-XX:MaxHeapSize -Xnoclassgc (GC)GC -XnoclassgcGC -Xprof -Xrs JVM JVM()Java JVMJVMSIGHUPSIGINTSIGTERM JVMJVMSIGQUIT JVMSIGINTSIGTERMJVM-Xrs-XrsSIGINTSIGTERMSIGHUPSIGQUITJVM -Xrs2: o SIGQUIT o JVMSystem.exit() -Xshare:mode mode auto Java HotSpot 32-Bit Client VM on off Java HotSpot 32-Bit Server VMJava HotSpot 64-Bit Client VMJava HotSpot 64-Bit Server VM dump -XshowSettings:category category all locale properties vm JVM -Xsssize ()KBkKMBmMGBgG o Linux/ARM (32): 320KB o Linux/i386 (32): 320KB o Linux/x64 (64): 1024KB o OS X (64): 1024KB o Oracle Solaris/i386 (32): 320KB o Oracle Solaris/x64 (64): 1024KB o Windows: 1024KB -Xss1m -Xss1024k -Xss1048576 -XX:ThreadStackSize -Xusealtsigs JVMSIGUSR1SIGUSR2-XX:+UseAltSigs -Xverify:mode mode Java remote -Xverify all Java HotSpot VM -XX:+DisableAttachMechanism JVMjcmdjstackjmapjinfo -XX:ErrorFile=filename hs_err_pidpid.log (pid)(%p) -XX:ErrorFile=./hs_err_pid%p.log /var/log/java/java_error.log -XX:ErrorFile=/var/log/java/java_error.log ()/tmp -XX:+FailOverToOldVerifier () -XX:LargePageSizeInBytes=size SolarisJava()size2(24816...)kKmMgG0JVM 4(MB) -XX:LargePageSizeInBytes=4m -XX:MaxDirectMemorySize=size I/O (java.nio)()kKmMgG0JVMNIO NIO1024KB -XX:MaxDirectMemorySize=1m -XX:MaxDirectMemorySize=1024k -XX:MaxDirectMemorySize=1048576 -XX:NativeMemoryTracking=mode JVMmode off JVM-XX:NativeMemoryTracking summary JVM(Java) detail JVMCallSite () -XX:ObjectAlignmentInBytes=alignment Java()828256()Java : 4GB * ObjectAlignmentInBytes : -XX:OnError=string -XX:OnErrorgcore(%p) -XX:OnError="gcore %p;dbx - %p" -XX:OnOutOfMemoryError=string OutOfMemoryError-XX:OnError -XX:+PerfDataSaveToFile Javajstat(1)hsperfdata_Javajstat jstat -class file:////hsperfdata_ jstat -gc file:////hsperfdata_ -XX:+PrintCommandLineFlags JVMJVM -XX:+PrintNMTStatistics JVM(-XX:NativeMemoryTracking) -XX:+RelaxAccessControlCheck () -XX:+ShowMessageBoxOnError JVMJVMJVM -XX:ThreadStackSize=size ()kKmMgG o Linux/ARM (32): 320KB o Linux/i386 (32): 320KB o Linux/x64 (64): 1024KB o OS X (64): 1024KB o Oracle Solaris/i386 (32): 320KB o Oracle Solaris/x64 (64): 1024KB o Windows: 1024KB -XX:ThreadStackSize=1m -XX:ThreadStackSize=1024k -XX:ThreadStackSize=1048576 -Xss -XX:+TraceClassLoading -XX:+TraceClassLoadingPreorder -XX:+TraceClassResolution -XX:+TraceClassUnloading -XX:+TraceLoaderConstraints -XX:+UseAltSigs JVMSIGUSR1SIGUSR2-Xusealtsigs -XX:-UseBiasedLocking http://www.oracle.com/technetwork/java/tuning-139912.html#section4.2.5Java -XX:-UseCompressedOops Java32GB643232GBJava64JVM Java32GB-XX:ObjectAlignmentInBytes -XX:+UseHugeTLBFS Linux-XX:+UseLargePagesJVM-XX:UseTransparentHugePages "" -XX:+UseLargePages "" -XX:+UseMembar ARM(ARM) -XX:+UsePerfData perfdataJVMhsperfdata_useridperfdata-XX:-UsePerfData -XX:+UseTransparentHugePages LinuxOS "" -XX:+AllowUserSignalHandlers JIT Java HotSpot VMjust-in-time (JIT) -XX:+AggressiveOpts -XX:AllocateInstancePrefetchLines=lines 1 -XX:AllocateInstancePrefetchLines=1 Java HotSpot Server VM -XX:AllocatePrefetchDistance=size ()Java kKmMgG-1 1024 -XX:AllocatePrefetchDistance=1024 Java HotSpot Server VM -XX:AllocatePrefetchInstr=instruction Java HotSpot Server VM030 -XX:AllocatePrefetchInstr=0 Java HotSpot Server VM -XX:AllocatePrefetchLines=lines 13 5 -XX:AllocatePrefetchLines=5 Java HotSpot Server VM -XX:AllocatePrefetchStepSize=size ()kKmMgG16 -XX:AllocatePrefetchStepSize=16 Java HotSpot Server VM -XX:AllocatePrefetchStyle=style style03 0 1 2 (TLAB) 3 SPARCBIS Java HotSpot Server VM -XX:+BackgroundCompilation -XX:-BackgroundCompilation(-Xbatch) -XX:CICompilerCount=threads JVM2JVM12 -XX:CICompilerCount=2 -XX:CodeCacheMinimumFreeSpace=size ()kKmMgG500KB1024MB -XX:CodeCacheMinimumFreeSpace=1024m -XX:CompileCommand=command,method[,option] StringindexOf() -XX:CompileCommand=exclude,java/lang/String.indexOf (/)-XX:+PrintCompilation-XX:+LogCompilation -XX:CompileCommand=exclude,java.lang.String::indexOf StringindexOf(String) -XX:CompileCommand="exclude,java/lang/String.indexOf,(Ljava/lang/String;)I" (*)indexOf() -XX:CompileCommand=exclude,*.indexOf -XX:CompileCommand -XX:CompileCommand="exclude java/lang/String indexOf" -XX:CompileCommandJIT.hotspot_compiler-XX:CompileCommandFile -XX:CompileCommand(\n) break JVM compileonly -XX:CompileOnly dontinline exclude help -XX:CompileCommand inline log (-XX:+LogCompilation) option (option)JITStringBufferappend()BlockLayoutByFrequency -XX:CompileCommand=option,java/lang/StringBuffer.append,BlockLayoutByFrequency print quiet -XX:CompileCommandStringindexOf() CompilerOracle: exclude java/lang/String.indexOf -XX:CompileCommand-XX:CompileCommand=quiet -XX:CompileCommandFile=filename JITJIT.hotspot_compiler StringtoString() print java/lang/String toString JIT-XX:CompileCommand -XX:CompileOnly=methods ()()Stringlength()Listsize() -XX:CompileOnly=java/lang/String.length,java/util/List.size (/)-XX:+PrintCompilation-XX:+LogCompilation -XX:CompileOnly=java.lang.String::length,java.util.List::size -XX:CompileOnly=java/lang/String -XX:CompileOnly=java/lang -XX:CompileOnly=.length -XX:CompileThreshold=invocations JVMJIT10,000JVM1,500-XX:+TieredCompilation5,000 -XX:CompileThreshold=5000 -XcompJava -XX:+DoEscapeAnalysis -XX:-DoEscapeAnalysisJava HotSpot Server VM -XX:InitialCodeCacheSize=size ()kKmMgG500KB32KB -XX:InitialCodeCacheSize=32k -XX:+Inline -XX:-Inline -XX:InlineSmallCode=size ()kKmMgG1000 -XX:InlineSmallCode=1000 -XX:+LogCompilation hotspot.log-XX:LogFile -XX:+LogCompilationJVM-XX:UnlockDiagnosticVMOptions -XX:+PrintCompilation -XX:MaxInlineSize=size ()kKmMgG35 -XX:MaxInlineSize=35 -XX:MaxNodeLimit=nodes 65,000 -XX:MaxNodeLimit=65000 -XX:MaxTrivialSize=size ()kKmMgG6 -XX:MaxTrivialSize=6 -XX:+OptimizeStringConcat StringString-XX:-OptimizeStringConcatJava HotSpot Server VM -XX:+PrintAssembly disassembler.so -XX:+PrintAssemblyJVM-XX:UnlockDiagnosticVMOptions -XX:+PrintCompilation JVM -XX:+LogCompilation -XX:+PrintInlining -XX:+PrintInliningJVM-XX:+UnlockDiagnosticVMOptions -XX:ReservedCodeCacheSize=size JIT()kKmMgG2GB-XX:InitialCodeCacheSize-Xmaxjitcodesize -XX:RTMAbortRatio=abort_ratio RTMRTM(%)-XX:+UseRTMDeopt5050% -XX:RTMRetryCount=number_of_retries RTM5-XX:UseRTMLocking -XX:+TieredCompilation Java HotSpot Server VM -XX:+UseAES IntelAMDSPARCAESIntel Westmere (2010)AMD Bulldozer (2011)SPARC (T4)UseAESUseAESIntrinsics -XX:+UseAESIntrinsics UseAESUseAESIntrinsicsJava HotSpot Server VM 3264AES-XX:-UseAES -XX:-UseAESIntrinsicsAES -XX:+UseAES -XX:+UseAESIntrinsics 3264UseAESUseAESIntrinsics-serverJava HotSpot Server VMVM -XX:+UseCodeCacheFlushing -XX:-UseCodeCacheFlushing -XX:+UseCondCardMark JavaJava HotSpot Server VM -XX:+UseRTMDeopt RTM-XX:RTMAbortRatio-XX:+UseRTMLocking -XX:+UseRTMLocking Restricted Transactional Memory (RTM)RTMTransactional Synchronization Extensions (TSX)x86 CPUJava HotSpot Server VM RTMx86IntelTSXRTM XBEGINXABORTXENDXTESTXBEGINXENDXENDXABORTXEND RTMRTMTSX RTM()RTM()RTM() -XX:+UseSHA SPARCSHAUseSHAUseSHA1IntrinsicsUseSHA256IntrinsicsUseSHA512Intrinsics UseSHAUseSHA*IntrinsicsSPARC T4Java HotSpot Server VM 64 SHAsun.security.provider.Sun SHA-XX:-UseSHASHA-XX:-UseSHA256Intrinsics -XX:+UseSHA1Intrinsics SHA-1 -XX:+UseSHA256Intrinsics SHA-224SHA-256 -XX:+UseSHA512Intrinsics SHA-384SHA-512 -XX:+UseSuperWord -XX:-UseSuperWordJava HotSpot Server VM -XX:+ExtendedDTraceProbes dtracedtrace -XX:+HeapDumpOnOutOfMemory java.lang.OutOfMemoryError(HPROF)Java-XX:HeapDumpPathOutOfMemoryError -XX:HeapDumpPath=path -XX:+HeapDumpOnOutOfMemoryError(HPROF)java_pidpid.hprof (pid)(%p) -XX:HeapDumpPath=./java_pid%p.hprof /var/log/java/java_heapdump.hprof -XX:HeapDumpPath=/var/log/java/java_heapdump.hprof -XX:LogFile=path hotspot.log /var/log/java/hotspot.log -XX:LogFile=/var/log/java/hotspot.log -XX:+PrintClassHistogram [Control]+[C](SIGTERM) jmap -histojcmd pid GC.class_histogram(pidJava) -XX:+PrintConcurrentLocks () - [Control]+[C](SIGTERM)java.util.concurrent jstack -ljcmd pid Thread.print -l(pidJava) -XX:+UnlockDiagnosticVMOptions JVM (GC)Java HotSpot VM -XX:+AggressiveHeap Java(RAMCPU) -XX:+AlwaysPreTouch JVMJavamain()JVM -XX:+CMSClassUnloadingEnabled (CMS)CMS-XX:-CMSClassUnloadingEnabled -XX:CMSExpAvgFactor=percent (0100)25%15% -XX:CMSExpAvgFactor=15 -XX:CMSInitiatingOccupancyFraction=percent CMS(0100)-1()-XX:CMSTriggerRatio 20% -XX:CMSInitiatingOccupancyFraction=20 -XX:+CMSScavengeBeforeRemark CMS -XX:CMSTriggerRatio=percent CMS-XX:MinHeapFreeRatio(0100)80% 75% -XX:CMSTriggerRatio=75 -XX:ConcGCThreads=threads GCJVMCPU GC2 -XX:ConcGCThreads=2 -XX:+DisableExplicitGC System.gc()System.gc()System.gc()JVMGC -XX:+ExplicitGCInvokesConcurrent System.gc()GC-XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses System.gc()GCGC-XX:+UseConcMarkSweepGC -XX:G1HeapRegionSize=size (G1)Java1MB32MB 16MB -XX:G1HeapRegionSize=16m -XX:+G1PrintHeapRegions G1 -XX:G1ReservePercent=percent G1false(050)10% 20% -XX:G1ReservePercent=20 -XX:InitialHeapSize=size ()01MB1024kKmMgGhttp://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/index.htmlJava SE HotSpot 6MB -XX:InitialHeapSize=6291456 -XX:InitialHeapSize=6144k -XX:InitialHeapSize=6m 0-XX:NewSize -XX:InitialSurvivorRatio=ratio (-XX:+UseParallelGC/-XX:+UseParallelOldGC)-XX:+UseParallelGC-XX:+UseParallelOldGC(-XX:-UseAdaptiveSizePolicy)-XX:SurvivorRatio (Y)(R)(S) S=Y/(R+2) 22 8(2MB)0.2MB 4 -XX:InitialSurvivorRatio=4 -XX:InitiatingHeapOccupancyPercent=percent GC(0100)1(G1)GC 45%0GC75% -XX:InitiatingHeapOccupancyPercent=75 -XX:MaxGCPauseMillis=time GC()JVM 500 -XX:MaxGCPauseMillis=500 -XX:MaxHeapSize=size ()2MB1024kKmMgG-XX:InitialHeapSize-XX:MaxHeapSizehttp://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/index.htmlJava SE HotSpot 80MB -XX:MaxHeapSize=83886080 -XX:MaxHeapSize=81920k -XX:MaxHeapSize=80m Oracle Solaris 7Oracle Solaris 8 SPARC4,000MBOracle Solaris 2.6x862,000MBLinux2,000MB -XX:MaxHeapSize-Xmx -XX:MaxHeapFreeRatio=percent GC(0100)70% 75% -XX:MaxHeapFreeRatio=75 -XX:MaxMetaspaceSize=size 256MB -XX:MaxMetaspaceSize=256m -XX:MaxNewSize=size ()() -XX:MaxTenuringThreshold=threshold GC15()15CMS6 10 -XX:MaxTenuringThreshold=10 -XX:MetaspaceSize=size -XX:MinHeapFreeRatio=percent GC(0100)40% 25% -XX:MinHeapFreeRatio=25 -XX:NewRatio=ratio 2/1 -XX:NewRatio=1 -XX:NewSize=size ()()kKmMgG GCGCGC41 256MB -XX:NewSize=256m -XX:NewSize=262144k -XX:NewSize=268435456 -XX:NewSize-Xmn -XX:ParallelGCThreads=threads JVMCPU GC2 -XX:ParallelGCThreads=2 -XX:+ParallelRefProcEnabled -XX:+PrintAdaptiveSizePolicy -XX:+PrintGC GC -XX:+PrintGCApplicationConcurrentTime (GC) -XX:+PrintGCApplicationStoppedTime (GC) -XX:+PrintGCDateStamps GC -XX:+PrintGCDetails GC -XX:+PrintGCTaskTimeStamps GC -XX:+PrintGCTimeStamps GC -XX:+PrintStringDeduplicationStatistics -XX:+UseStringDeduplication -XX:+PrintTenuringDistribution Desired survivor size 48286924 bytes, new threshold 10 (max 10) - age 1: 28992024 bytes, 28992024 total - age 2: 1366864 bytes, 30358888 total - age 3: 1425912 bytes, 31784800 total ... 1(Eden)22(2) 28,992,0241Eden1,366,86423n -XX:+ScavengeBeforeFullGC GCGCGCGCGC-XX:-ScavengeBeforeFullGC -XX:SoftRefLRUPolicyMSPerMB=time ()1-XX:SoftRefLRUPolicyMSPerMB(Java HotSpot Client VM)(Java HotSpot Server VM)1Client VMServer VM-Xmx 2.5 -XX:SoftRefLRUPolicyMSPerMB=2500 -XX:StringDeduplicationAgeThreshold=threshold String-XX:+PrintTenuringDistributionString3-XX:+UseStringDeduplication -XX:SurvivorRatio=ratio Eden8Eden/4 -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=percent (0100)50% 30% -XX:TargetSurvivorRatio=30 -XX:TLABSize=size (TLAB)()kKmMgG0JVM TLAB512KB -XX:TLABSize=512k -XX:+UseAdaptiveSizePolicy -XX:-UseAdaptiveSizePolicy(-XX:SurvivorRatio) -XX:+UseCMSInitiatingOccupancyOnly CMS -XX:+UseConcMarkSweepGC CMS(-XX:+UseParallelGC)CMSG1(-XX:+UseG1GC) JVM-XX:+UseParNewGCJDK 8-XX:+UseConcMarkSweepGC -XX:-UseParNewGC -XX:+UseG1GC (G1)RAMGCG1GC(0.5)(6GB) JVM -XX:+UseGCOverheadLimit OutOfMemoryErrorGCJVM98%2%GCOutOfMemoryError-XX:-UseGCOverheadLimit -XX:+UseNUMA (NUMA)NUMA(-XX:+UseParallelGC) -XX:+UseParallelGC () JVM-XX:+UseParallelOldGC -XX:+UseParallelOldGC GC-XX:+UseParallelGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGCJDK 8-XX:+UseConcMarkSweepGC-XX:+UseParNewGC -XX:+UseSerialGC JVM -XX:+UseSHM LinuxJVM "" -XX:+UseStringDeduplication (G1)-XX:+UseG1GC StringString deduplicationJavaStringStringString -XX:+UseTLAB (TLAB)TLAB-XX:-UseTLAB -Xincgc JDK 8 -Xrunlibname /-agentlib -XX:CMSIncrementalDutyCycle=percent (0100)-XX:+CMSIncrementalModeJDK 8 -XX:CMSIncrementalDutyCycleMin=percent -XX:+CMSIncrementalPacing(0100)-XX:+CMSIncrementalModeJDK 8 -XX:+CMSIncrementalMode CMSCMSIncrementalJDK 8 -XX:CMSIncrementalOffset=percent (0100)-XX:+CMSIncrementalModeJDK 8 -XX:+CMSIncrementalPacing JVM-XX:+CMSIncrementalModeJDK 8 -XX:CMSIncrementalSafetyFactor=percent (0100)-XX:+CMSIncrementalModeJDK 8 -XX:CMSInitiatingPermOccupancyFraction=percent GC(0100)JDK 8 -XX:MaxPermSize=size ()JDK 8-XX:MaxMetaspaceSize -XX:PermSize=size ()JDK 8-XX:MetaspaceSize -XX:+UseSplitVerifier ()(JVM)2JDK 8 -XX:+UseStringCache JDK 8 1 java -d64 -server -XX:+AggressiveOpts -XX:+UseLargePages -Xmn10g -Xms26g -Xmx26g 2 java -d64 -XX:+UseG1GC -Xms26g Xmx26g -XX:MaxGCPauseMillis=500 -XX:+PrintGCTimeStamp ()Translation-Lookaside Buffer Translation-Lookaside Buffer (TLB)TLBTLBTLBTLB OSJVM SolarisLinux Solaris Solaris 9Multiple Page Size Support(MPSS)http://www.oracle.com/technetwork/server-storage/solaris10/overview/solaris9-features-scalability-135663.html Linux 2.62.4: # cat /proc/meminfo | grep Huge HugePages_Total: 0 HugePages_Free: 0 Hugepagesize: 2048 kB 3"Huge"root: 1. -XX:+UseSHM(-XX:+UseHugeTLBFS)SHMMAXJava4GBRAM: # echo 4294967295 > /proc/sys/kernel/shmmax 2. -XX:+UseSHM-XX:+UseHugeTLBFS4GB3GB(2048KB3GB = 3 * 1024MB = 3072MB = 3072 * 1024KB = 3145728KB and 3145728KB / 2048KB = 1536): # echo 1536 > /proc/sys/vm/nr_hugepages +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |/proc(rc.localsysctl.conf)o | |OS/proc/sys/kernel/shmmax/proc/sys/vm/nr_hugepages()JavaJavao | | Javao Permanento o GC | |Javanr_hugepagesJVMPermanent | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ JVMJavaAPISystem.exit(exitValue) o 0: o >0: o javac(1) o jdb(1) o javah(1) o jar(1) o jstat(1) JDK 8 201533 java(1)