想写一篇jvm的工具入门

前端之家收集整理的这篇文章主要介绍了想写一篇jvm的工具入门前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

为什么要写一个jvm的工具入门呢,一是自己也不会,二是因为不会所以想学一下,还有就是这个确实很重要,对学习jvm有很多的用处,对定位问题有很大的便利,以前毕业那会我记得有个笔试,知道JAVA_HOME/bin目录的工具吗,例举下3个以上,并说说有什么用,可以怎么使用,,,,我只能说呵呵了,写代码哪里要注意这么多哈

一、基础了解

我们一般安装java,首先都会来一个java命令(现阶段java8和11用的人比较多,我这里还是8)

D:\Data\lugh1>java
用法: java [-options] class [args...]
           (执行类)
   或  java [-options] -jar jarfile [args...]
           (执行 jar 文件)
其中选项包括:
    -d32          使用 32 位数据模型 (如果可用)
    -d64          使用 64 位数据模型 (如果可用)
    -server       选择 "server" VM
                  默认 VM 是 server.

    -cp <目录和 zip/jar 文件的类搜索路径>
    -classpath <目录和 zip/jar 文件的类搜索路径>
                  用 ; 分隔的目录,JAR 档案
                  和 ZIP 档案列表,用于搜索文件-D<名称>=<值>
                  设置系统属性
    -verbose:[class|gc|jni]
                  启用详细输出
    -version      输出产品版本并退出
    -version:<值>
                  警告: 此功能已过时,将在
                  未来发行版中删除。
                  需要指定的版本才能运行
    -showversion  输出产品版本并继续
    -jre-restrict-search | -no-jre-restrict-search
                  警告: 此功能已过时,将在
                  未来发行版中删除。
                  在版本搜索包括/排除用户专用 JRE
    -? -help      输出此帮助消息
    -X            输出非标准选项的帮助
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  按指定的粒度启用断言
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  禁用具有指定粒度的断言
    -esa | -enablesystemassertions
                  启用系统断言
    -dsa | -disablesystemassertions
                  禁用系统断言
    -agentlib:<libname>[=<选项>]
                  加载本机代理库 <libname>,例如 -agentlib:hprof
                  另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
    -agentpath:<pathname>[=<选项>]
                  按完整路径名加载本机代理库
    -javaagent:<jarpath>[=<选项>]
                  加载 Java 编程语言代理,请参阅 java.lang.instrument
    -splash:<imagepath>
                  使用指定的图像显示启动屏幕

参数分为三类,分别是:

标准参数(很稳定的) 

-help

 -version

-X参数 (非标准参数,不能保证被所有的JVM实现都支持

  -Xint

  -Xcomp

-XX参数(使用率较高)

  -XX:newSize

  -XX:+UseSerialGC

反正以前我是不知道-X,-XX,+UseSerialGC中的+号是什么,或许现在知道,好像也比较容易忘记,因为也没经常使用呀

来试一下java -X

D:\Data\lugh1>java -X
    -Xmixed           混合模式执行 (默认)
    -Xint             仅解释模式执行
    -Xbootclasspath:<用 ; 分隔的目录和 zip/jar 文件>
                      设置搜索路径以引导类和资源
    -Xbootclasspath/a:<用 ; 分隔的目录和 
                      附加在引导类路径末尾
    -Xbootclasspath/p:<用 ; 分隔的目录和 
                      置于引导类路径之前
    -Xdiag            显示附加诊断消息
    -Xnoclassgc       禁用类垃圾收集
    -Xincgc           启用增量垃圾收集
    -Xloggc:<file>    将 GC 状态记录在文件中 (带时间戳)
    -Xbatch           禁用后台编译
    -Xms<size>        设置初始 Java 堆大小
    -Xmx<size>        设置最大 Java 堆大小
    -Xss<size>        设置 Java 线程堆栈大小
    -Xprof            输出 cpu 配置文件数据
    -Xfuture          启用最严格的检查,预期将来的默认值
    -Xrs              减少 Java/VM 对操作系统信号的使用 (请参阅文档)
    -Xcheck:jni       对 JNI 函数执行其他检查
    -Xshare:off       不尝试使用共享类数据
    -Xshare:auto      在可能的情况下使用共享类数据 (默认)
    -Xshare:on        要求使用共享类数据,否则将失败。
    -XshowSettings    显示所有设置并继续
    -XshowSettings:all
                      显示所有设置并继续
    -XshowSettings:vm 显示所有与 vm 相关的设置并继续
    -XshowSettings:properties
                      显示所有属性设置并继续
    -XshowSettings:locale
                      显示所有与区域设置相关的设置并继续

-Xms<size> 设置初始 Java 堆大小
-Xmx<size> 设置最大 Java 堆大小
-Xss<size> 设置 Java 线程堆栈大小

是不是觉得上面几个参数很熟悉,就是日常调整堆和栈大小的参数呀,很好记吧,比如java ‐Xms2048m ‐Xmx2048m  class_name

在解释模式(interpreted mode)下,-Xint标记会强制JVM执行所有的字节码,当然这会降低运行速度,通常低10倍或更多

-Xcomp参数与它(-Xint)正好相反,JVM在第一次使用时会把所有的字节码编译成本地代码,从而带来最大程度的优化。然而,很多应用在使用-Xcomp也会有一些性能损失,当然这比使用-Xint损失的少,原因是-xcomp没有让JVM启用JIT编译器的全部功能。JIT编译器可以对是否需要编译做判断,如果所有代码都进行编译的话,对于一些只执行一次的代码就没有意义了
-Xmixed是混合模式,将解释模式与编译模式进行混合使用,由jvm自己决定,这是jvm默认的模式,也是推荐使用的模式

 

接下来了解下-XX参数

-XX参数的使用有2种方式,一种是boolean类型,一种是非boolean类型(好像有点废话)

  • boolean类型
格式:-XX:[+-]
如:-XX:+DisableExplicitGC 表示禁用手动调用gc操作,也就是说调用System.gc()无效,+表示启用,-表示禁止

非boolean类型

格式:-XX:
如:-XX:NewRatio=1 表示新生代和老年代的比值

那么多参数怎么记得呢,可以使用java -XX:+PrintFlagsFinal查看所有参数呀

D:\MyData\lugh1>java -XX:+PrintFlagsFinal
[Global flags]
     intx ActiveProcessorCount                      = -1                                  {product}
    uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}
    uintx AdaptiveSizePausePolicy                   = 0                                   {product}
    uintx AdaptiveSizePolicyCollectionCostMargin    = 50                                  {product}
    uintx AdaptiveSizePolicyInitializingSteps       = 20                                  {product}
    uintx AdaptiveSizePolicyOutputInterval          =                                    {product}
    uintx AdaptiveSizePolicyWeight                  =                                   {product}
    uintx AdaptiveSizeThroughPutPolicy              =                                    {product}
    uintx AdaptiveTimeWeight                        = 25                                  {product}
     bool AdjustConcurrency                         = false                               {product}
     bool AggressiveHeap                            = bool AggressiveOpts                            =                                {product}
     intx AliasLevel                                = 3                                   {C2 product}
     bool AlignVector                               =                                {C2 product}
     intx AllocateInstancePrefetchLines             =                                    {product}
     intx AllocatePrefetchDistance                  = 192                                 {product}
     intx AllocatePrefetchInstr                     =                                    {product}
     intx AllocatePrefetchLines                     =                                    {product}
     intx AllocatePrefetchStepSize                  =                                   {product}
     intx AllocatePrefetchStyle                     =                                    {product}
     bool AllowJNIEnvProxy                          = bool AllowNonVirtualCalls                      = bool AllowParallelDefineClass                  = bool AllowUserSignalHandlers                   = bool AlwaysActAsServerClassMachine             = bool AlwaysCompileLoopMethods                  = bool AlwaysLockClassLoader                     = bool AlwaysPreTouch                            = bool AlwaysRestoreFPU                          = bool AlwaysTenure                              = bool AssertOnSuspendWaitFailure                = bool AssumeMP                                  =                                {product}
     intx AutoBoxCacheMax                           = 128                                 {C2 product}
    uintx AutoGCSelectPauseMillis                   = 5000                                {product}
     intx BCEATraceLevel                            =                                    {product}
     intx BackEdgeThreshold                         = 100000                              {pd product}
     bool BackgroundCompilation                     = true                                {pd product}
    uintx BaseFootPrintEstimate                     = 268435456                           {product}
     intx BiasedLockingBulkRebiasThreshold          =                                   {product}
     intx BiasedLockingBulkRevokeThreshold          = 40                                  {product}
     intx BiasedLockingDecayTime                    = 25000                               {product}
     intx BiasedLockingStartupDelay                 = 4000                                {product}
     bool BindGCTaskThreadsTocpus                   = bool BlockLayoutByFrequency                    =                                 {C2 product}
     intx BlockLayoutMinDiamondPercentage           =                                   {C2 product}
     bool BlockLayoutRotateLoops                    =                                 {C2 product}
     bool BranchOnRegister                          =                                {C2 product}
     bool BytecodeVerificationLocal                 = bool BytecodeVerificationRemote                = bool C1OptimizeVirtualCallProfiling            =                                 {C1 product}
     bool C1ProfileBranches                         = bool C1ProfileCalls                            = bool C1ProfileCheckcasts                       = bool C1ProfileInlinedCalls                     = bool C1ProfileVirtualCalls                     = bool C1UpdateMethodData                        =                                 {C1 product}
     intx CICompilerCount                          := bool CICompilerCountPercpu                     = bool CITime                                    = bool CMSAbortSemantics                         =                                {product}
    uintx CMSAbortablePrecleanMinWorkPerIteration   = 100                                 {product}
     intx CMSAbortablePrecleanWaitMillis            =                                  {manageable}
    uintx CMSBitMapYieldQuantum                     = 10485760                            {product}
    uintx CMSBootstrapOccupancy                     = bool CMSClassUnloadingEnabled                  =                                 {product}
    uintx CMSClassUnloadingMaxInterval              = bool CMSCleanOnEnter                           = bool CMSCompactWhenClearAllSoftRefs            =                                 {product}
    uintx CMSConcMarkMultiple                       = bool CMSConcurrentMTEnabled                    =                                 {product}
    uintx CMSCoordinatorYieldSleepCount             = bool CMSDumpAtPromotionFailure                 = bool CMSEdenChunksRecordAlways                 =                                 {product}
    uintx CMSExpAvgFactor                           = bool CMSExtrapolateSweep                       =                                {product}
    uintx CMSFullGCsBeforeCompaction                =                                    {product}
    uintx CMSIncrementalDutyCycle                   =                                   {product}
    uintx CMSIncrementalDutyCycleMin                = bool CMSIncrementalMode                        =                                {product}
    uintx CMSIncrementalOffset                      = bool CMSIncrementalPacing                      =                                 {product}
    uintx CMSIncrementalSafetyFactor                =                                   {product}
    uintx CMSIndexedFreeListReplenish               =                                    {product}
     intx CMSInitiatingOccupancyFraction            = -                                  {product}
    uintx CMSIsTooFullPercentage                    = 98                                  {product}
   double CMSLargeCoalSurplusPercent                = 0.950000                            {product}
   double CMSLargeSplitSurplusPercent               = 1.000000                            {product}
     bool CMSLoopWarn                               =                                {product}
    uintx CMSMaxAbortablePrecleanLoops              =                                    {product}
     intx CMSMaxAbortablePrecleanTime               =                                 {product}
    uintx CMSOldPLABMax                             = 1024                                {product}
    uintx CMSOldPLABMin                             = 16                                  {product}
    uintx CMSOldPLABNumRefills                      =                                    {product}
    uintx CMSOldPLABReactivityFactor                = 2bool CMSOldPLABResizeQuicker                   =                                {product}
    uintx CMSOldPLABToleranceFactor                 = bool CMSPLABRecordAlways                       =                                 {product}
    uintx CMSParPromoteBlocksToClaim                = bool CMSParallelInitialMarkEnabled             = bool CMSParallelRemarkEnabled                  = bool CMSParallelSurvivorRemarkEnabled          =                                 {product}
    uintx CMSPrecleanDenominator                    =                                    {product}
    uintx CMSPrecleanIter                           =                                    {product}
    uintx CMSPrecleanNumerator                      = bool CMSPrecleanRefLists1                      = bool CMSPrecleanRefLists2                      = bool CMSPrecleanSurvivors1                     = bool CMSPrecleanSurvivors2                     =                                 {product}
    uintx CMSPrecleanThreshold                      = 1000bool CMSPrecleaningEnabled                     = bool CMSPrintChunksInDump                      = bool CMSPrintEdenSurvivorChunks                = bool CMSPrintObjectsInDump                     =                                {product}
    uintx CMSRemarkVerifyVariant                    = bool CMSReplenishIntermediate                  =                                 {product}
    uintx CMSRescanMultiple                         =                                   {product}
    uintx CMSSamplingGrain                          = 16384bool CMSScavengeBeforeRemark                   =                                {product}
    uintx CMSScheduleRemarkEdenPenetration          =                                   {product}
    uintx CMSScheduleRemarkEdenSizeThreshold        = 2097152                             {product}
    uintx CMSScheduleRemarkSamplingRatio            = 5                                   {product}
   double CMSSmallCoalSurplusPercent                = 1.050000double CMSSmallSplitSurplusPercent               = 1.100000bool CMSSplitIndexedFreeListBlocks             =                                 {product}
     intx CMSTriggerInterval                        = -                                  {manageable}
    uintx CMSTriggerRatio                           = 80                                  {product}
     intx CMSWaitDuration                           = 2000                                {manageable}
    uintx CMSWorkQueueDrainThreshold                = bool CMSYield                                  =                                 {product}
    uintx CMSYieldSleepCount                        =                                    {product}
    uintx CMSYoungGenPerWorker                      = 67108864                            {pd product}
    uintx CMS_FLSPadding                            =                                    {product}
    uintx CMS_FLSWeight                             = 75                                  {product}
    uintx CMS_SweepPadding                          =                                    {product}
    uintx CMS_SweepTimerThresholdMillis             =                                   {product}
    uintx CMS_SweepWeight                           = bool CheckEndorsedAndExtDirs                   = bool CheckJNICalls                             = bool ClassUnloading                            = bool ClassUnloadingWithConcurrentMark          =                                 {product}
     intx ClearFPUAtPark                            = bool ClipInlining                              =                                 {product}
    uintx CodeCacheExpansionSize                    = 65536                               {pd product}
    uintx CodeCacheMinimumFreeSpace                 = 512000                              {product}
     bool CollectGen0First                          = bool CompactFields                             =                                 {product}
     intx CompilationPolicyChoice                   =                                    {product}
ccstrlist CompileCommand                            =                                     {product}
    ccstr CompileCommandFile                        =                                     {product}
ccstrlist CompileOnly                               =                                     {product}
     intx CompileThreshold                          = 10000                               {pd product}
     bool CompilerThreadHintNoPreempt               =                                 {product}
     intx CompilerThreadPriority                    = -                                  {product}
     intx CompilerThreadStackSize                   =                                    {pd product}
    uintx CompressedClassSpaceSize                  = 1073741824                          {product}
    uintx ConcGCThreads                             =                                    {product}
     intx ConditionalMoveLimit                      =                                    {C2 pd product}
     intx ContendedPaddingWidth                     =                                  {product}
     bool ConvertSleepToYield                       =                                 {pd product}
     bool ConvertYieldToSleep                       = bool CrashOnOutOfMemoryError                   = bool CreateMinidumpOnCrash                     = bool CriticalJNINatives                        = bool DTraceAllocProbes                         = bool DTraceMethodProbes                        = bool DTraceMonitorProbes                       = bool Debugging                                 =                                {product}
    uintx DefaultMaxRAMFraction                     =                                    {product}
     intx DefaultThreadPriority                     = -                                  {product}
     intx DeferPollingPageLoopCount                 = -                                  {product}
     intx DeferThrSuspendLoopCount                  = bool DeoptimizeRandom                          = bool DisableAttachMechanism                    = bool DisableExplicitGC                         = bool DisplayVMOutputToStderr                   = bool DisplayVMOutputToStdout                   = bool DoEscapeAnalysis                          = bool DontCompileHugeMethods                    = bool DontYieldALot                             =                                {pd product}
    ccstr DumpLoadedClassList                       =                                     {product}
     bool DumpReplayDataOnError                     = bool DumpSharedSpaces                          = bool EagerXrunInit                             =                                {product}
     intx EliminateAllocationArraySizeLimit         = bool EliminateAllocations                      = bool EliminateAutoBox                          = bool EliminateLocks                            = bool EliminateNestedLocks                      =                                 {C2 product}
     intx EmitSync                                  = bool EnableContended                           = bool EnableResourceManagementTLABCache         = bool EnableSharedLookupCache                   = bool EnableTracing                             =                                {product}
    uintx ErgoHeapSizeLimit                         =                                    {product}
    ccstr ErrorFile                                 =                                     {product}
    ccstr ErrorReportServer                         =                                     {product}
   double EscapeAnalysisTimeout                     = 20.000000                           {C2 product}
     bool EstimateArgEscape                         = bool ExitOnOutOfMemoryError                    = bool ExplicitGCInvokesConcurrent               = bool ExplicitGCInvokesConcurrentAndUnloadsClasses  = bool ExtendedDTraceProbes                      =                                {product}
    ccstr ExtraSharedClassListFile                  =bool FLSAlwaysCoalesceLarge                    =                                {product}
    uintx FLSCoalescePolicy                         = double FLSLargestBlockCoalesceProximity          = 0.990000bool FailOverToOldVerifier                     = bool FastTLABRefill                            =                                 {product}
     intx FenceInstruction                          =                                    {ARCH product}
     intx FieldsAllocationStyle                     = bool FilterSpurIoUsWakeups                     =                                 {product}
    ccstr FlightRecorderOptions                     =bool ForceNUMA                                 = bool ForceTimeHighResolution                   =                                {product}
     intx FreqInlineSize                            = 325                                 {pd product}
   double G1ConcMarkStepDurationMillis              = 10.000000                           {product}
    uintx G1ConcRSHotCardLimit                      =                                    {product}
    uintx G1ConcRSLogCacheSize                      =                                   {product}
     intx G1ConcRefinementGreenZone                 =                                    {product}
     intx G1ConcRefinementRedZone                   =                                    {product}
     intx G1ConcRefinementServiceIntervalMillis     = 300                                 {product}
    uintx G1ConcRefinementThreads                   =                                    {product}
     intx G1ConcRefinementThresholdStep             =                                    {product}
     intx G1ConcRefinementYellowZone                =                                    {product}
    uintx G1ConfidencePercent                       =                                   {product}
    uintx G1HeapRegionSize                          =                                    {product}
    uintx G1HeapWastePercent                        =                                    {product}
    uintx G1MixedGCCountTarget                      = 8                                   {product}
     intx G1RSetRegionEntries                       =                                    {product}
    uintx G1RSetScanBlockSize                       =                                   {product}
     intx G1RSetSparseRegionEntries                 =                                    {product}
     intx G1RSetUpdatingPauseTimePercent            =                                   {product}
     intx G1RefProcDrainInterval                    =                                   {product}
    uintx G1ReservePercent                          =                                   {product}
    uintx G1SATBBufferEnqueueingThresholdPercent    = 60                                  {product}
     intx G1SATBBufferSize                          =                                 {product}
     intx G1UpdateBufferSize                        = 256bool G1UseAdaptiveConcRefinement               =                                 {product}
    uintx GCDrainStackTargetSize                    =                                   {product}
    uintx GCHeapFreeLimit                           =                                    {product}
    uintx GCLockerEdenExpansionPercent              = bool GCLockerInvokesConcurrent                 =                                {product}
    uintx GCLogFileSize                             = 8192                                {product}
    uintx GCPauseIntervalMillis                     =                                    {product}
    uintx GCTaskTimeStampEntries                    = 200                                 {product}
    uintx GCTimeLimit                               =                                   {product}
    uintx GCTimeRatio                               = 99                                  {product}
    uintx HeapBaseMinAddress                        = 2147483648                          {pd product}
     bool HeapDumpAfterFullGC                       =                                {manageable}
     bool HeapDumpBeforeFullGC                      = bool HeapDumpOnOutOfMemoryError                =                                {manageable}
    ccstr HeapDumpPath                              =                                     {manageable}
    uintx HeapFirstMaximumCompactionCount           =                                    {product}
    uintx HeapMaximumCompactionInterval             =                                   {product}
    uintx HeapSizePerGCThread                       = 87241520bool IgnoreEmptyClassPaths                     = bool IgnoreUnrecognizedVMOptions               =                                {product}
    uintx IncreaseFirstTierCompileThresholdAt       = bool IncrementalInline                         =                                 {C2 product}
    uintx InitialBootClassLoaderMetaspaceSize       = 4194304                             {product}
    uintx InitialCodeCacheSize                      = 2555904                             {pd product}
    uintx InitialHeapSize                          := 132120576                           {product}
    uintx InitialRAMFraction                        = double InitialRAMPercentage                      = 1.562500                            {product}
    uintx InitialSurvivorRatio                      =                                    {product}
    uintx InitialTenuringThreshold                  = 7                                   {product}
    uintx InitiatingHeapOccupancyPercent            = 45bool Inline                                    =                                 {product}
    ccstr InlineDataFile                            =                                     {product}
     intx InlineSmallCode                           = bool InlineSynchronizedMethods                 = bool InsertMemBarAfterArraycopy                =                                 {C2 product}
     intx InteriorEntryAlignment                    =                                   {C2 pd product}
     intx InterpreterProfilePercentage              = 33bool JNIDetachReleasesMonitors                 = bool JavaMonitorsInStackTrace                  =                                 {product}
     intx JavaPriority10_To_OSPriority              = -                                  {product}
     intx JavaPriority1_To_OSPriority               = -                                  {product}
     intx JavaPriority2_To_OSPriority               = -                                  {product}
     intx JavaPriority3_To_OSPriority               = -                                  {product}
     intx JavaPriority4_To_OSPriority               = -                                  {product}
     intx JavaPriority5_To_OSPriority               = -                                  {product}
     intx JavaPriority6_To_OSPriority               = -                                  {product}
     intx JavaPriority7_To_OSPriority               = -                                  {product}
     intx JavaPriority8_To_OSPriority               = -                                  {product}
     intx JavaPriority9_To_OSPriority               = -bool LIRFillDelaySlots                         =                                {C1 pd product}
    uintx LargePageHeapSizeThreshold                = 134217728                           {product}
    uintx LargePageSizeInBytes                      = bool LazyBootClassLoader                       =                                 {product}
     intx LiveNodeCountInliningCutoff               = 40000bool LogCommercialFeatures                     =                                {product}
     intx LoopMaxUnroll                             =                                   {C2 product}
     intx LoopOptsCount                             = 43                                  {C2 product}
     intx LoopUnrollLimit                           =                                   {C2 pd product}
     intx LoopUnrollMin                             = bool LoopUnswitching                           = bool ManagementServer                          =                                {product}
    uintx MarkStackSize                             =                              {product}
    uintx MarkStackSizeMax                          = 536870912                           {product}
    uintx MarkSweepAlwaysCompactCount               =                                    {product}
    uintx MarkSweepDeadRatio                        =                                    {product}
     intx MaxBCEAEstimateLevel                      =                                    {product}
     intx MaxBCEAEstimateSize                       = 150                                 {product}
    uintx MaxDirectMemorySize                       = bool MaxFDLimit                                =                                 {product}
    uintx MaxGCMinorPauseMillis                     = 4294967295                          {product}
    uintx MaxGCPauseMillis                          =                           {product}
    uintx MaxHeapFreeRatio                          =                                  {manageable}
    uintx MaxHeapSize                              := 2111832064                          {product}
     intx MaxInlineLevel                            = 9                                   {product}
     intx MaxInlineSize                             = 35                                  {product}
     intx MaxJNILocalCapacity                       =                                {product}
     intx MaxJavaStackTraceDepth                    =                                 {product}
     intx MaxJumpTableSize                          = 65000                               {C2 product}
     intx MaxJumpTableSparseness                    =                                    {C2 product}
     intx MaxLabelRootDepth                         = 1100                                {C2 product}
     intx MaxLoopPad                                = 11                                  {C2 product}
    uintx MaxMetaspaceExpansion                     = 5451776                             {product}
    uintx MaxMetaspaceFreeRatio                     = 70                                  {product}
    uintx MaxMetaspaceSize                          = 4294901760                          {product}
    uintx MaxNewSize                               := 703594496                           {product}
     intx MaxNodeLimit                              = 75000                               {C2 product}
 uint64_t MaxRAM                                    =                                    {pd product}
    uintx MaxRAMFraction                            = double MaxRAMPercentage                          = 25.000000                           {product}
     intx MaxRecursiveInlineLevel                   =                                    {product}
    uintx MaxTenuringThreshold                      = 15                                  {product}
     intx MaxTrivialSize                            = 6                                   {product}
     intx MaxVectorSize                             =                                   {C2 product}
    uintx MetaspaceSize                             = 21807104                            {pd product}
     bool MethodFlushing                            =                                 {product}
    uintx MinHeapDeltaBytes                        := 524288                              {product}
    uintx MinHeapFreeRatio                          =                                    {manageable}
     intx MinInliningThreshold                      = 250                                 {product}
     intx MinJumpTableSize                          =                                   {C2 pd product}
    uintx MinMetaspaceExpansion                     = 339968                              {product}
    uintx MinMetaspaceFreeRatio                     =                                   {product}
    uintx MinRAMFraction                            = double MinRAMPercentage                          = 50.000000                           {product}
    uintx MinSurvivorRatio                          =                                    {product}
    uintx MinTLABSize                               = 2048                                {product}
     intx MonitorBound                              = bool MonitorInUseLists                         =                                {product}
     intx MultiArrayExpandLimit                     = bool MustCallLoadClassInternal                 =                                {product}
    uintx NUMAChunkResizeWeight                     =                                   {product}
    uintx NUMAInterleaveGranularity                 =                              {product}
    uintx NUMAPageScanRate                          =                                  {product}
    uintx NUMASpaceResizeRate                       =                           {product}
     bool NUMAStats                                 =                                {product}
    ccstr NativeMemoryTracking                      = off                                 {product}
     bool NeedsDeoptSuspend                         = bool NeverActAsServerClassMachine              = bool NeverTenure                               =                                {product}
    uintx NewRatio                                  =                                    {product}
    uintx NewSize                                  := 44040192                            {product}
    uintx NewSizeThreadIncrease                     = 5320                                {pd product}
     intx NmethodSweepActivity                      =                                   {product}
     intx NmethodSweepCheckInterval                 =                                    {product}
     intx NmethodSweepFraction                      =                                   {product}
     intx NodeLimitFudgeFactor                      =                                 {C2 product}
    uintx NumberOfGCLogFiles                        =                                    {product}
     intx NumberOfLoopInstrToAlign                  =                                    {C2 product}
     intx ObjectAlignmentInBytes                    =                                    {lp64_product}
    uintx OldPLABSize                               =                                 {product}
    uintx OldPLABWeight                             =                                   {product}
    uintx OldSize                                  := 88080384bool OmitStackTraceInFastThrow                 =                                 {product}
ccstrlist OnError                                   =                                     {product}
ccstrlist OnOutOfMemoryError                        =                                     {product}
     intx OnStackReplacePercentage                  = 140                                 {pd product}
     bool OptimizeFill                              = bool OptimizePtrCompare                        = bool OptimizeStringConcat                      = bool OptoBundling                              =                                {C2 pd product}
     intx OptoLoopAlignment                         =                                   {pd product}
     bool OptoScheduling                            =                                {C2 pd product}
    uintx PLABWeight                                = bool PSChunkLargeArrays                        =                                 {product}
     intx ParGCArrayScanChunk                       =                                   {product}
    uintx ParGCDesiredObjsFromOverflowList          = bool ParGCTrimOverflow                         = bool ParGCUseLocalOverflow                     =                                {product}
    uintx ParallelGCBufferWastePct                  =                                   {product}
    uintx ParallelGCThreads                         = bool ParallelGCVerbose                         =                                {product}
    uintx ParallelOldDeadWoodLimiterMean            =                                   {product}
    uintx ParallelOldDeadWoodLimiterStdDev          = bool ParallelRefProcBalancingEnabled           = bool ParallelRefProcEnabled                    = bool PartialPeelAtUnsignedTests                = bool PartialPeelLoop                           =                                 {C2 product}
     intx PartialPeelNewPhiDelta                    =                                    {C2 product}
    uintx PausePadding                              =                                    {product}
     intx PerBytecodeRecompilationCutoff            =                                  {product}
     intx PerBytecodeTrapLimit                      =                                    {product}
     intx PerMethodRecompilationCutoff              = 400                                 {product}
     intx PerMethodTrapLimit                        = bool PerfAllowAtExitRegistration               = bool PerfBypassFileSystemCheck                 =                                {product}
     intx PerfDataMemorySize                        = 32768                               {product}
     intx PerfDataSamplingInterval                  =                                   {product}
    ccstr PerfDataSaveFile                          =bool PerfDataSaveToFile                        = bool PerfDisableSharedMem                      =                                {product}
     intx PerfMaxStringConstLength                  =                                 {product}
     intx PreInflateSpin                            = bool PreferInterpreterNativeStubs              =                                {pd product}
     intx PrefetchCopyIntervalInBytes               = 576                                 {product}
     intx PrefetchFieldsAhead                       =                                    {product}
     intx PrefetchScanIntervalInBytes               = bool PreserveAllAnnotations                    = bool PreserveFramePointer                      =                                {pd product}
    uintx PretenureSizeThreshold                    = bool PrintAdaptiveSizePolicy                   = bool PrintCMSInitiationStatistics              =                                {product}
     intx PrintCMSStatistics                        = bool PrintClassHistogram                       = bool PrintClassHistogramAfterFullGC            = bool PrintClassHistogramBeforeFullGC           = bool PrintCodeCache                            = bool PrintCodeCacheOnCompilation               = bool PrintCommandLineFlags                     = bool PrintCompilation                          = bool PrintConcurrentLocks                      =                                {manageable}
     intx PrintFLSCensus                            =                                    {product}
     intx PrintFLSStatistics                        = bool PrintFlagsFinal                          := bool PrintFlagsInitial                         = bool PrintGC                                   = bool PrintGCApplicationConcurrentTime          = bool PrintGCApplicationStoppedTime             = bool PrintGCCause                              = bool PrintGCDateStamps                         = bool PrintGCDetails                            = bool PrintGCID                                 = bool PrintGCTaskTimeStamps                     = bool PrintGCTimeStamps                         = bool PrintHeapAtGC                             =                                {product rw}
     bool PrintHeapAtGCExtended                     = bool PrintHeapAtSIGBREAK                       = bool PrintJNIGCStalls                          = bool PrintJNIResolving                         = bool PrintOldPLAB                              = bool PrintOopAddress                           = bool PrintPLAB                                 = bool PrintParallelOldGCPhaseTimes              = bool PrintPromotionFailure                     = bool PrintReferenceGC                          = bool PrintSafepointStatistics                  =                                {product}
     intx PrintSafepointStatisticsCount             =                                  {product}
     intx PrintSafepointStatisticsTimeout           = -bool PrintSharedArchiveAndExit                 = bool PrintSharedDictionary                     = bool PrintSharedSpaces                         = bool PrintStringDeduplicationStatistics        = bool PrintStringTableStatistics                = bool PrintTLAB                                 = bool PrintTenuringDistribution                 = bool PrintTieredEvents                         = bool PrintVMOptions                            = bool PrintVMQWaitTime                          = bool PrintWarnings                             =                                 {product}
    uintx ProcessDistributionStride                 = bool ProfileInterpreter                        = bool ProfileIntervals                          =                                {product}
     intx ProfileIntervalsTicks                     =                                  {product}
     intx ProfileMaturityPercentage                 = bool ProfileVM                                 = bool ProfilerPrintByteCodeStatistics           = bool ProfilerRecordPC                          =                                {product}
    uintx PromotedPadding                           =                                    {product}
    uintx QueuedAllocationWarningCount              =                                    {product}
    uintx RTMRetryCount                             =                                    {ARCH product}
     bool RangeCheckElimination                     =                                 {product}
     intx ReadPrefetchInstr                         = bool ReassociateInvariants                     = bool ReduceBulkZeroing                         = bool ReduceFieldZeroing                        = bool ReduceInitialCardMarks                    = bool ReduceSignalUsage                         =                                {product}
     intx RefDiscoveryPolicy                        = bool ReflectionWrapResolutionErrors            = bool RegisterFinalizersAtInit                  = bool RelaxAccessControlCheck                   =                                {product}
    ccstr ReplayDataFile                            =bool RequireSharedSpaces                       =                                {product}
    uintx ReservedCodeCacheSize                     = 251658240                           {pd product}
     bool ResizeOldPLAB                             = bool ResizePLAB                                = bool ResizeTLAB                                = bool RestoreMXCSROnJNICalls                    = bool RestrictContended                         = bool RewriteBytecodes                          = bool RewriteFrequentPairs                      =                                 {pd product}
     intx SafepointPollOffset                       =                                  {C1 pd product}
     intx SafepointSpinBeforeYield                  = bool SafepointTimeout                          =                                {product}
     intx SafepointTimeoutDelay                     = bool ScavengeBeforeFullGC                      =                                 {product}
     intx SelfDestructTimer                         =                                    {product}
    uintx SharedBaseAddress                         =                                    {product}
    ccstr SharedClassListFile                       =                                     {product}
    uintx SharedMiscCodeSize                        = 122880                              {product}
    uintx SharedMiscDataSize                        =                              {product}
    uintx SharedReadOnlySize                        = 16777216                            {product}
    uintx SharedReadWriteSize                       = bool ShowMessageBoxOnError                     =                                {product}
     intx SoftRefLRUPolicyMSPerMB                   = bool SpecialEncodeISOArray                     = bool SplitIfBlocks                             =                                 {C2 product}
     intx StackRedPages                             =                                    {pd product}
     intx StackShadowPages                          =                                    {pd product}
     bool StackTraceInThrowable                     =                                 {product}
     intx StackYellowPages                          = bool StartAttachListener                       =                                {product}
     intx StarvationMonitorInterval                 = bool StressLdcRewrite                          =                                {product}
    uintx StringDeduplicationAgeThreshold           =                                    {product}
    uintx StringTableSize                           = 60013bool SuppressFatalErrorMessage                 =                                {product}
    uintx SurvivorPadding                           =                                    {product}
    uintx SurvivorRatio                             =                                    {product}
     intx SuspendRetryCount                         =                                   {product}
     intx SuspendRetryDelay                         =                                    {product}
     intx SyncFlags                                 =                                    {product}
    ccstr SyncKnobs                                 =                                     {product}
     intx SyncVerbose                               =                                    {product}
    uintx TLABAllocationWeight                      =                                   {product}
    uintx TLABRefillWasteFraction                   =                                   {product}
    uintx TLABSize                                  = bool TLABStats                                 =                                 {product}
    uintx TLABWasteIncrement                        =                                    {product}
    uintx TLABWasteTargetPercent                    =                                    {product}
    uintx TargetPLABWastePct                        =                                   {product}
    uintx TargetSurvivorRatio                       =                                   {product}
    uintx TenuredGenerationSizeIncrement            =                                   {product}
    uintx TenuredGenerationSizeSupplement           =                                   {product}
    uintx TenuredGenerationSizeSupplementDecay      =                                    {product}
     intx ThreadPriorityPolicy                      = bool ThreadPriorityVerbose                     =                                {product}
    uintx ThreadSafetyMargin                        = 52428800                            {product}
     intx ThreadStackSize                           =                                    {pd product}
    uintx ThresholdTolerance                        =                                   {product}
     intx Tier0BackedgeNotifyFreqLog                =                                   {product}
     intx Tier0InvokeNotifyFreqLog                  =                                    {product}
     intx Tier0ProfilingStartPercentage             =                                  {product}
     intx Tier23InlineeNotifyFreqLog                =                                   {product}
     intx Tier2BackEdgeThreshold                    =                                    {product}
     intx Tier2BackedgeNotifyFreqLog                = 14                                  {product}
     intx Tier2CompileThreshold                     =                                    {product}
     intx Tier2InvokeNotifyFreqLog                  =                                   {product}
     intx Tier3BackEdgeThreshold                    = 60000                               {product}
     intx Tier3BackedgeNotifyFreqLog                = 13                                  {product}
     intx Tier3CompileThreshold                     =                                 {product}
     intx Tier3DelayOff                             =                                    {product}
     intx Tier3DelayOn                              =                                    {product}
     intx Tier3InvocationThreshold                  =                                  {product}
     intx Tier3InvokeNotifyFreqLog                  =                                   {product}
     intx Tier3LoadFeedback                         =                                    {product}
     intx Tier3MinInvocationThreshold               =                                  {product}
     intx Tier4BackEdgeThreshold                    =                                {product}
     intx Tier4CompileThreshold                     = 15000                               {product}
     intx Tier4InvocationThreshold                  =                                 {product}
     intx Tier4LoadFeedback                         =                                    {product}
     intx Tier4MinInvocationThreshold               = 600bool TieredCompilation                         =                                 {pd product}
     intx TieredCompileTaskTimeout                  =                                   {product}
     intx TieredRateUpdateMaxTime                   =                                   {product}
     intx TieredRateUpdateMinTime                   =                                    {product}
     intx TieredStopAtLevel                         = bool TimeLinearScan                            =                                {C1 product}
     bool TraceBiasedLocking                        = bool TraceClassLoading                         = bool TraceClassLoadingPreorder                 = bool TraceClassPaths                           = bool TraceClassResolution                      = bool TraceClassUnloading                       = bool TraceDynamicGCThreads                     = bool TraceGen0Time                             = bool TraceGen1Time                             =                                {product}
    ccstr TraceJVMTI                                =bool TraceLoaderConstraints                    = bool TraceMetadataHumongousAllocation          = bool TraceMonitorInflation                     = bool TraceParallelOldGCTasks                   =                                {product}
     intx TraceRedefineClasses                      = bool TraceSafepointCleanupTime                 = bool TraceSharedLookupCache                    = bool TraceSuspendWaitFailures                  =                                {product}
     intx TrackedInitializationLimit                = bool TransmitErrorReport                       = bool TrapBasedNullChecks                       = bool TrapBasedRangeChecks                      =                                {C2 pd product}
     intx TypeProfileArgsLimit                      =                                    {product}
    uintx TypeProfileLevel                          = 111                                 {pd product}
     intx TypeProfileMajorReceiverPercent           = 90                                  {C2 product}
     intx TypeProfileParmsLimit                     =                                    {product}
     intx TypeProfileWidth                          =                                    {product}
     intx UnguardOnExecutionViolation               = bool UnlinkSymbolsALot                         = bool Use486InstrsOnly                          =                                {ARCH product}
     bool UseAES                                    = bool UseAESIntrinsics                          =                                 {product}
     intx UseAVX                                    = bool UseAdaptiveGCBoundary                     = bool UseAdaptiveGenerationSizePolicyAtMajorCollection  = bool UseAdaptiveGenerationSizePolicyAtMinorCollection  = bool UseAdaptiveNUMAChunkSizing                = bool UseAdaptiveSizeDecayMajorGCCost           = bool UseAdaptiveSizePolicy                     = bool UseAdaptiveSizePolicyFootprintGoal        = bool UseAdaptiveSizePolicyWithSystemGC         = bool UseAddressNop                             =                                 {ARCH product}
     bool UseAltSigs                                = bool UseAutoGCSelectPolicy                     = bool UseBMI1Instructions                       = bool UseBMI2Instructions                       = bool UseBiasedLocking                          = bool UseBimorphicInlining                      = bool UseBoundThreads                           = bool UseCLMUL                                  = bool UseCMSBestFit                             = bool UseCMSCollectionPassing                   = bool UseCMSCompactAtFullCollection             = bool UseCMSInitiatingOccupancyOnly             = bool UseCRC32Intrinsics                        = bool UseCodeCacheFlushing                      = bool UseCompiler                               = bool UseCompilerSafepoints                     = bool UseCompressedClassPointers               :=                                 {lp64_product}
     bool UseCompressedOops                        := bool UseConcMarkSweepGC                        = bool UseCondCardMark                           = bool UseCountLeadingZerosInstruction           = bool UseCountTrailingZerosInstruction          = bool UseCountedLoopSafepoints                  = bool UseCounterDecay                           = bool UseDivMod                                 = bool UseDynamicNumberOfGCThreads               = bool UseFPUForSpilling                         = bool UseFastAccessorMethods                    = bool UseFastEmptyMethods                       = bool UseFastJNIAccessors                       = bool UseFastStosb                              = bool UseG1GC                                   = bool UseGCLogFileRotation                      = bool UseGCOverheadLimit                        = bool UseGCTaskAffinity                         = bool UseHeavyMonitors                          = bool UseInlineCaches                           = bool UseInterpreter                            = bool UseJumpTables                             = bool UseLWPSynchronization                     = bool UseLargePages                             = bool UseLargePagesInMetaspace                  = bool UseLargePagesIndividualAllocation        := bool UseLockedTracing                          = bool UseLoopCounter                            = bool UseLoopInvariantCodeMotion                = bool UseLoopPredicate                          = bool UseMathExactIntrinsics                    = bool UseMaximumCompactionOnSystemGC            = bool UseMembar                                 = bool UseMontgomeryMultiplyIntrinsic            = bool UseMontgomerySquareIntrinsic              = bool UseMulAddIntrinsic                        = bool UseMultiplyToLenIntrinsic                 = bool UseNUMA                                   = bool UseNUMAInterleaving                       = bool UseNewLongLShift                          = bool USEOSErrorReporting                       = bool USEOldInlining                            = bool USEOnStackReplacement                     = bool USEOnlyInlinedBimorphic                   = bool USEOptoBiasInlining                       = bool UsePSAdaptiveSurvivorSizePolicy           = bool UseParNewGC                               = bool UseParallelGC                            := bool UseParallelOldGC                          = bool UsePerfData                               = bool UsePopCountInstruction                    = bool UseRDPCForConstantTableBase               = bool UseRTMDeopt                               = bool UseRTMLocking                             = bool UseSHA                                    = bool UseSHA1Intrinsics                         = bool UseSHA256Intrinsics                       = bool UseSHA512Intrinsics                       =                                {product}
     intx UseSSE                                    = bool UseSSE42Intrinsics                        = bool UseSerialGC                               = bool UseSharedSpaces                           = bool UseSignalChaining                         = bool UseSquareToLenIntrinsic                   = bool UseStoreImmI16                            = bool UseStringDeduplication                    = bool UseSuperWord                              = bool UseTLAB                                   = bool UseThreadPriorities                       = bool UseTypeProfile                            = bool UseTypeSpeculation                        = bool UseUTCFileTimestamp                       = bool UseUnalignedLoadStores                    = bool UseVMInterruptibleIO                      = bool UseXMMForArrayCopy                        = bool UseXmmI2D                                 = bool UseXmmI2F                                 = bool UseXmmLoadAndClearUpper                   = bool UseXmmRegToRegMoveAll                     = bool VMThreadHintNoPreempt                     =                                {product}
     intx VMThreadPriority                          = -                                  {product}
     intx VMThreadStackSize                         =                                    {pd product}
     intx ValueMapInitialSize                       =                                   {C1 product}
     intx ValueMapMaxLoopSize                       =                                    {C1 product}
     intx ValueSearchLimit                          = bool VerifyMergedCPBytecodes                   = bool VerifySharedSpaces                        =                                {product}
     intx WorkAroundNPTLTimedWaitHang               =                                    {product}
    uintx YoungGenerationSizeIncrement              =                                   {product}
    uintx YoungGenerationSizeSupplement             =                                   {product}
    uintx YoungGenerationSizeSupplementDecay        =                                    {product}
    uintx YoungPLABSize                             = 4096bool ZeroTLAB                                  =                                {product}
     intx hashCode                                  =                                    {product}
用法: java [-
                  使用指定的图像显示启动屏幕
有关详细信息,请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
View Code

上面的参数中有等号(=和:=),分别代表的是默认值,和被修改的值啦

好了,基础够基础了吧,以后这些加(+)减(-)等于(=或:=)看的懂了

二、基础工具

$JAVA_HOME/bin目录下真的有很多的工具,这里不截图啦,直接上用的比较的工具好啦

2.1、jps

这个工具真的很实用,而且很简单呢,功能linux的ps命令类似:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(LVMID,Local Virtual Machine Identifier)

[root@hadoop apache-tomcat-8.5.57]# jps -help
usage: jps [-help]
       jps [-q] [-mlvV] [<hostid>]

Definitions:
    <hostid>:      <hostname>[:<port>]
-l : 输出主类全名或jar路径
-q : 只输出LVMID
-m : 输出JVM启动时传递给main()的参数
-v : 输出JVM启动时显示指定的JVM参数

 

 

 2.2、jstat

jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程[插图]虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据。

[root@hadoop apache-tomcat-57]# jstat -help
Usage: jstat -help|-options
       jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

Definitions:
  <option>      An option reported by the -options option
  <vmid>        Virtual Machine Identifier. A vmid takes the following form:
                     <lvmid>[@<hostname>[:<port>]]
                Where <lvmid> is the local vm identifier for the target
                Java virtual machine,typically a process id; <hostname> is
                the name of the host running the target Java virtual machine;
                and <port> is the port number  the rmiregistry on the
                target host. See the jvmstat documentation for a more complete
                description of the Virtual Machine Identifier.
  <lines>       Number of samples between header lines.
  <interval>    Sampling interval. The following forms are allowed:
                    <n>[ms"|s]
                Where <n> is an integer and the suffix specifies the units as
                milliseconds(") or seconds("). The default units are .
  <count>       Number of samples to take before terminating.
  -J<flag>      Pass <flag> directly to the runtime system.

jstat -options #查看下支持的选项,如下

[root@hadoop apache-tomcat-options
-class  #类加载器
-compiler #JIT
-gc  #GC堆状态
-gccapacity #各个区的大小
-gccause #最近一次GC的统计和原因
-gcMetacapacity #元空间大小
-gcnew #新区统计
-gcnewcapacity #新区大小
-gcold #老区统计
-gcoldcapacity #老区大小
-gcutil #GC汇总统计
-printcompilation #HotSpot编译统计
Options #选项,我们一般使用 -gcutil 查看gc情况 
vmid    #VM的进程号,即当前运行的java进程号,可以理解我java程序的pid
interval #间隔时间,单位为秒或者毫秒
count   #打印次数,如果缺省则打印无数次

对于命令格式中的VMID与LVMID需要特别说明一下:如果是本地虚拟机进程,VMID与LVMID是一致的;如果是远程虚拟机进程,那VMID的格式应当是

[protocol:][]lvmid[@hostname][:port]/servername]

开始操作:

jstat -class 1645  #类加载的统计

Loaded:加载class的数量
Bytes:所占用空间大小
Unloaded:未加载数量
Bytes:未加载占用空间
Time:时间

jstat -gc 1645  1 3 #统计3次,每隔一秒,对gc进行统计

S0C:第一个Survivor区的大小(KB)
S1C:第二个Survivor区的大小(KB)
S0U:第一个Survivor区的使用大小(KB)
S1U:第二个Survivor区的使用大小(KB)
EC:Eden区的大小(KB)
EU:Eden区的使用大小(KB)
OC:Old区大小(KB)
OU:Old使用大小(KB)
MC:方法区大小(KB),java8方法区的实现是元数据空间,java7的方法区实现是永久代
MU:方法区使用大小(KB)
CCSC:压缩类空间大小(KB)
CCSU:压缩类空间使用大小(KB)
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间

jstat -compiler 1645 #对编译进行统计

Compiled:编译数量Failed:失败数量
Invalid:不可用数量
Time:时间
FailedType:失败类型
FailedMethod:失败的方法

 2.3、jinfo

jinfo(Configuration Info for Java)的作用是实时查看和调整虚拟机各项参数

[root@hadoop ~]# jinfo -help
Usage:
    jinfo [option] <pid>
        (to connect to running process)
    jinfo [option] <executable <core>
        (to connect to a core file)
    jinfo [option] [server_id@]<remote server IP or 
        (to connect to remote debug server)

where <option> is one of:
    -flag <name>         to print the value of the named VM flag #打印单个jvm的参数
    -flag [+|-]<name>    to enable or disable the named VM flag #运行期修改一部分运行期可写的虚拟机参数值
    -flag <name>=<value> to set the named VM flag to the given value #运行期修改一部分运行期可写的虚拟机参数值
    -flags               to print VM flags #打印该进程的相关的参数
    -sysprops            to print Java system properties #把虚拟机进程的System.getProperties()的内容打印出来
    <no option>          to print both of the above
    -h | -help           to print this help message

jinfo -flags  1645

 

 

 jinfo -flag InitialHeapSize  1645

 

 

 jinfo -flag InitialHeapSize  1645

[root@hadoop ~]# jinfo -sysprops  1645
Attaching to process ID 1645,please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.181-b13
java.runtime.name = Java(TM) SE Runtime Environment
java.vm.version = b13
sun.boot.library.path = /home/hadoop/jdk/jre/lib/amd64
java.protocol.handler.pkgs = org.apache.catalina.webresources
shared.loader =
java.vendor.url = http:java.oracle.com/
java.vm.vendor = Oracle Corporation
path.separator = :
file.encoding.pkg = sun.io
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
java.util.logging.config.file = /root/apache-tomcat-57/conf/logging.properties
tomcat.util.buf.StringCache.byte.enabled = 
sun.os.patch.level = unknown
sun.java.launcher = SUN_STANDARD
user.country = US
tomcat.util.scan.StandardJarScanFilter.jarsToScan = log4j-taglib*.jar,log4j-web*.jar,log4javascript*.jar,slf4j-taglib*.jar
user.dir = /root/apache-tomcat-57
java.vm.specification.name = Java Virtual Machine Specification
java.runtime.version = 1.8.0_181-b13
java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
os.arch = amd64
java.endorsed.dirs = /home/hadoop/jdk/jre/lib/endorsed
line.separator =

java.io.tmpdir = /root/apache-tomcat-57/temp
java.vm.specification.vendor = Oracle Corporation
java.util.logging.manager = org.apache.juli.ClassLoaderLogManager
java.naming.factory.url.pkgs = org.apache.naming
os.name = Linux
org.apache.catalina.security.SecurityListener.UMASK = 0027
sun.jnu.encoding = UTF-
ignore.endorsed.dirs =
java.library.path = /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.class.version = 52.0
java.specification.name = Java Platform API Specification
sun.management.compiler = HotSpot Bit Tiered Compilers
os.version = 2.6.32-754.24..el6.x86_64
java.util.concurrent.ForkJoinPool.common.threadFactory = org.apache.catalina.startup.SafeForkJoinWorkerThreadFactory
user.home = /root
user.timezone = Asia/Chongqing
catalina.useNaming = 
java.awt.printerjob = sun.print.PSPrinterJob
file.encoding = UTF-
java.specification.version = 1.8
tomcat.util.scan.StandardJarScanFilter.jarsToSkip = annotations-api.jar,ant-junit*.jar,ant-launcher.jar,ant.jar,asm-*.jar,aspectj*.jar,bootstrap.jar,catalina-ant.jar,catalina-ha.jar,catalina-jmx-remote.jar,catalina-storeconfig.jar,catalina-tribes.jar,catalina-ws.jar,catalina.jar,cglib-*.jar,cobertura-*.jar,commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,commons-daemon.jar,commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,commons-logging*.jar,commons-math*.jar,commons-pool*.jar,dom4j-*.jar,easymock-*.jar,ecj-*.jar,el-api.jar,geronimo-spec-jaxrpc*.jar,h2*.jar,hamcrest-*.jar,hibernate*.jar,httpclient*.jar,icu4j-*.jar,jasper-el.jar,jasper.jar,jaspic-api.jar,jaxb-*.jar,jaxen-*.jar,jdom-*.jar,jetty-*.jar,jmx-tools.jar,jmx.jar,jsp-api.jar,jstl.jar,jta*.jar,junit-*.jar,junit.jar,log4j*.jar,mail*.jar,objenesis-*.jar,oraclepki.jar,oro-*.jar,servlet-api-*.jar,servlet-api.jar,slf4j*.jar,taglibs-standard-spec-*.jar,tagsoup-*.jar,tomcat-api.jar,tomcat-coyote.jar,tomcat-dbcp.jar,tomcat-i18n-*.jar,tomcat-jdbc.jar,tomcat-jni.jar,tomcat-juli-adapters.jar,tomcat-juli.jar,tomcat-util-scan.jar,tomcat-util.jar,tomcat-websocket.jar,tools.jar,websocket-api.jar,wsdl4j*.jar,xercesImpl.jar,xml-apis.jar,xmlParserAPIs-*.jar,xmlParserAPIs.jar,xom-*.jar
catalina.home = /root/apache-tomcat-
user.name = root
java.class.path = /root/apache-tomcat-57/bin/bootstrap.jar:/root/apache-tomcat-57/bin/tomcat-juli.jar
java.naming.factory.initial = org.apache.naming.java.javaURLContextFactory
package.definition = sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.naming.,org.apache.tomcat.
java.vm.specification.version = 
sun.arch.data.model = 
sun.java.command = org.apache.catalina.startup.Bootstrap start
java.home = /home/hadoop/jdk/jre
user.language = en
java.specification.vendor = Oracle Corporation
awt.toolkit = sun.awt.X11.XToolkit
java.vm.info = mixed mode
java.version = .0_181
java.ext.dirs = /home/hadoop/jdk/jre/lib/ext:/usr/java/packages/lib/ext
sun.boot.class.path = /home/hadoop/jdk/jre/lib/resources.jar:/home/hadoop/jdk/jre/lib/rt.jar:/home/hadoop/jdk/jre/lib/sunrsasign.jar:/home/hadoop/jdk/jre/lib/jsse.jar:/home/hadoop/jdk/jre/lib/jce.jar:/home/hadoop/jdk/jre/lib/charsets.jar:/home/hadoop/jdk/jre/lib/jfr.jar:/home/hadoop/jdk/jre/classes
server.loader =
java.vendor = Oracle Corporation
catalina.base = /root/apache-tomcat-
jdk.tls.ephemeralDHKeySize = 2048
file.separator = /
java.vendor.url.bug = http:bugreport.sun.com/bugreport/
common.loader = ${catalina.base}/lib",${catalina.base}/lib/*.jar${catalina.home}/lib${catalina.home}/lib/*.jar
sun.io.unicode.encoding = UnicodeLittle
sun.cpu.endian = little
package.access =cpu.isalist =
View Code

2.4、jmap

jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件),还可以使用“暴力”方式:-XX:+HeapDumpOnOutOfMemoryError参数,可以让虚拟机在内存溢出异常出现之后自动生成堆转储快照文件

jmap的作用并不仅仅是为了获取堆转储快照,它还可以查询finalize执行队列、Java堆和方法区的详细信息,如空间使用率、当前用的是哪种收集器等

[root@hadoop ~]# jmap -help
Usage:
    jmap [option] <pid>
        (to connect to running process)
    jmap [option] <executable <core>)
    jmap [option] [server_id@]<remote server IP or  is one of:
    <none>               to print same info as Solaris pmap
    -heap                to print java heap summary #统计-histo[:live]        to print histogram of java object heap; if the live
                         suboption is specified,only count live objects
    -clstats             to print class loader statistics
    -finalizerinfo       to print information on objects awaiting finalization
    -dump:<dump-options> to dump java heap in hprof binary format #dump出java堆的二进制文件
                         dump-options:
                           live         dump only live objects; if not specified,all objects  the heap are dumped.
                           format=b     binary format
                           file=<file>  dump heap to <
                         Example: jmap -dump:live,format=b,file=heap.bin <pid>
    -F                   force. Use with -dump:<dump-options> <pid> or -histo
                         to force a heap dump or histogram when <pid> does not
                         respond. The  suboption is not supported
                          this mode.
    -h | -help           to print this help message
    -J<flag>             to pass <flag> directly to the runtime system
-heap #打印jvm heap的情况,比如参数,分代,回收器等
-histo #打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。  
-histo:live #同上,但是只答应存活对象的情况   
-dump #生成堆转储快照,格式为-dump:[live,]format=b,1)">file=<filename>,其中自参数说明是否只dump出存活对象
-finalizerinfo #显示在F-Queue中等待的finalizer线程执行finalize方法的对象 
-clstats #打印类的加载信息
-F #强制生成dump文件

jmap -heap 1645

 

 

 jmap -histo 1645 | more   #查看内存中的对象和数量

 

 

 上图中的对象说明:

B byte
C char
D double
F float
I int
J long
Z boolean
[ 数组,如[I表示int[]
[L+类名 其他对象
jmap -dump:format=b,file=/root/dump.bin 1645  #将内存的使用情况dump到文件
[root@hadoop bin]# jmap -dump:format=b,1)">file=/root/dump.bin 
Dumping heap to /root/dump.bin ...
Heap dump file created

 

 

 2.5、jhat

JDK提供jhat(JVM Heap Analysis Tool)命令与jmap搭配使用,来分析jmap生成的堆转储快照。jhat内置了一个微型的HTTP/Web服务器,生成堆转储快照的分析结果后,可以在浏览器中查看(实际情况使用的不多)

[root@hadoop ~]# jhat -help
Usage:  jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>

        -J<flag>          Pass <flag> directly to the runtime system. For
                          example,-J-mx512m to use a maximum heap size of 512MB
        -stack false:     Turn off tracking object allocation call stack.
        -refs :      Turn off tracking of references to objects
        -port <port>:     Set the port for the HTTP server.  Defaults to 7000
        -exclude <file>:  Specify a  that lists data members that should
                          be excluded from the reachableFrom query.
        -baseline <file>: Specify a baseline object dump.  Objects 
                          both heap dumps with the same ID and same class will
                          be marked as not being new.
        -debug <int>:     Set debug level.
                            :  No debug output
                            1:  Debug hprof  parsing
                            2:  Debug hprof  parsing,no server
        -version          Report version number
        -h|-help          Print this help and exit
        <file>            The  to read

For a dump  that contains multiple heap dumps,you may specify which dump in the 
by appending #<number>" to the file name,i.e. foo.hprof#3.

All boolean options default to true"

jhat -port 9999 dump.bin 

 

 

 登录自己的地址:http://192.168.88.137:9999/

 

 

 这个网址拉到最下面有一个查询功能

 

 

 

 

 

 如上的每一个结果都可以点进去去查看

2.6、jstack

jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间挂起等,都是导致线程长时间停顿的常见原因

[root@hadoop ~]# jstack -help
Usage:
    jstack [-l] <pid>
        (to connect to running process)
    jstack -F [-m] [-l] <pid>
        (to connect to a hung process)
    jstack [-m] [-l] <executable> <core>)
    jstack [-m] [-l] [server_id@]<remote server IP or 
        (to connect to a remote debug server)

Options:
    -F  to force a thread dump. Use when jstack <pid> does not respond (process is hung)
    -m  to print both java and native frames (mixed mode)
    -l   listing. Prints additional information about locks
    -h or -help to print this help message
-F : 当正常输出请求不被响应时,强制输出线程堆栈
-l : 除堆栈外,显示关于锁的附加信息
-m : 如果调用到本地方法的话,可以显示C/C++的堆栈

jstack 1645 | more  #查看该线程的快照信息

 

 

 如上的状态信息可以参考:java多线程与并发(基础篇)

三、可视化工具

3.1、JConsole

JConsole(Java Monitoring and Management Console)是一款基于JMX(Java Manage-ment Extensions)的可视化监视、管理工具。它的主要功能是通过JMX的MBean(Managed Bean)对系统进行信息收集和参数动态调整

一、本地连接

 

 

 可以看出来可以对内存,线程等进行监控。

二、远程监控

这里我们使用tomcat做实验,首先要修改catalina.sh文件添加如下内容:参考https://blog.csdn.net/shamoshuizu/article/details/70598268

JAVA_OPTS=-Djava.rmi.server.hostname=192.168.88.137 -Dcom.sun.management.jmxremote.port=8099 -Dcom.sun.management.jmxremote.rmi.port=8099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

然后重启tomcat,接下来连接远程

 

 

这个工具使用起来并不难,只要自己要有jvm的基础啦,不然看不懂,展示出来了也是白干活。

3.2、VisualVM

VisualVM(All-in-One Java Troubleshooting Tool)是功能最强大的运行监视和故障处理程序之一,能够监控线程,内存情况,查看方法cpu时间和内存中的对象,已被GC的对象,反向查看分配的堆栈,使用起来也很简单

 双击jvisualvm.exe软件,打开该工具

 

同JConsole 一样可以本地和远程,直接打开本地进程

 

 基本pid,jvm参数,主机等一览无余,还有监控页面包括cpu,堆,类,线程等监控,还可以执行垃圾回收,和dump线程呢

 

 

 试试远程的,同JConsole 的设置方式对tomcate进行设置

 

 

 

其实工具是什么呢,就是为了方便获取信息嘛,能不能看懂,能不能还得看自己的水平够不够,能不能够发现问题,能不能解决问题了。

 3.3、JMC

 Java Mission Control:可持续在线的监控工具

JMC与虚拟机之间同样采取JMX协议进行通信,JMC一方面作为JMX控制台,显示来自虚拟机MBean提供的数据;另一方面作为JFR的分析工具,展示来自JFR的数据

 用起来也很简单,双击jmc.exe打开工具,默认情况下会扫描出本地的进程,然后可以点击:文件->连接,来创建新的连接:

 

然后根据下图操作,遇到情况下一步,下一步就好,就有如下的图了:

 

 该工具持续监控了很多东西:

一般信息:关于虚拟机、操作系统和记录的一般信息。
内存:关于内存管理和垃圾收集的信息。
代码:关于方法、异常错误、编译和类加载的信息。
线程:关于应用程序中线程和锁的信息。
I/O:关于文件套接字输入、输出的信息。
系统:关于正在运行Java虚拟机的系统、进程和环境变量的信息。
事件:关于记录中的事件类型的信息,可以根据线程或堆栈跟踪,按照日志或图形的格式查看。

四、其他工具-MAT

MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止了垃圾收集器的回收工作,并可以通过报表直观的查看到可能造成这种结果的对象

官网:https://www.eclipse.org/mat/

下载地址:https://www.eclipse.org/mat/downloads.php

下载后,解压,双击MemoryAnalyzer.exe打开程序,然后点击文件->打开dump出的文件就出现了如下的图

 

 

 下图可以看到基本的内存可能出问题的地方:

 

 

 

这篇文章纯粹是一个工具的使用简单说明,没有太多的技术含量,但是我觉得工欲善其事必先利其器,所以用好一些工具对自己能力的提升,效率的提升有莫大的帮助,工具这些东西只有用到的时候才会查找,但是也要大概了解下怎么用吧,比如什么工具可以用来干嘛呢,我写这个的目的就是用来以后自己当做工具文档来查看下,技术用时方恨少,所以平时多积累些也不是一件坏事呢,好吧,好好努力撒。

 

原文链接:/jvm/997847.html

猜你在找的JVM相关文章