【大数据day04】——JVM优化 上(jvm的内存模型( 二 )


2.3、-X参数
jvm的-X参数是非标准参数,在不同版本的jvm中,参数可能会有所不同,可以通过java -X查看非标准参数 。
[root@node01 test]# java -X-Xmixed混合模式执行 (默认)-Xint仅解释模式执行-Xbootclasspath:<用 : 分隔的目录和 zip/jar 文件>设置搜索路径以引导类和资源-Xbootclasspath/a:<用 : 分隔的目录和 zip/jar 文件>附加在引导类路径末尾-Xbootclasspath/p:<用 : 分隔的目录和 zip/jar 文件>置于引导类路径之前-Xdiag显示附加诊断消息-Xnoclassgc禁用类垃圾收集-Xincgc启用增量垃圾收集-Xloggc:将 GC 状态记录在文件中 (带时间戳)-Xbatch禁用后台编译-Xms>设置初始 Java 堆大小-Xmx>设置最大 Java 堆大小-Xss>设置 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显示所有与区域设置相关的设置并继续-X 选项是非标准选项, 如有更改, 恕不另行通知 。
2.3.1、-Xint、-Xcomp、--是混合模式,将解释模式与编译模式进行混合使用,由jvm自己决定,这是jvm默认的模式,也是推荐使用的模式 。
示例:强制设置运行模式
#强制设置为解释模式[root@node01 test]# java-showversion -Xint TestJVMjava version "1.8.0_141"Java(TM) SE Runtime Environment (build 1.8.0_141-b15)Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, interpreted mode)itcast#强制设置为编译模式[root@node01 test]# java-showversion -Xcomp TestJVMjava version "1.8.0_141"Java(TM) SE Runtime Environment (build 1.8.0_141-b15)Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, compiled mode)itcast#注意:编译模式下,第一次执行会比解释模式下执行慢一些,注意观察 。#默认的混合模式[root@node01 test]# java-showversion TestJVMjava version "1.8.0_141"Java(TM) SE Runtime Environment (build 1.8.0_141-b15)Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)itcast
2.4、-XX参数
-XX参数也是非标准参数,主要用于jvm的调优和debug操作 。
-XX参数的使用有2种方式,一种是类型,一种是非类型:
非类型
用法:
[root@node01 test]# java -showversion -XX:+DisableExplicitGC TestJVMjava version "1.8.0_141"Java(TM) SE Runtime Environment (build 1.8.0_141-b15)Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)itcast
2.5、-Xms与-Xmx参数
-Xms与-Xmx分别是设置jvm的堆内存的初始大小和最大大小 。
-:等价于-XX:,设置JVM最大堆内存为2048M 。
-:等价于-XX:,设置JVM初始堆内存为512M 。
适当的调整jvm的内存大小,可以充分利用服务器资源,让程序跑的更快 。
示例:
[root@node01 test]# java -Xms512m -Xmx2048m TestJVMitcast
2.6、查看jvm的运行参数
有些时候我们需要查看jvm的运行参数,这个需求可能会存在2种情况:
第一,运行java命令时打印出运行参数;
第二,查看正在运行的java进程的参数;
2.6.1、运行java命令时打印参数
运行java命令时打印参数,需要添加-XX:+参数即可 。
[root@node01 test]# java -XX:+PrintFlagsFinal -version[Global flags]uintx AdaptiveSizeDecrementScaleFactor= 4{product}uintx AdaptiveSizeMajorGCDecayTimeScale= 10{product}uintx AdaptiveSizePausePolicy= 0{product}uintx AdaptiveSizePolicyCollectionCostMargin= 50{product}uintx AdaptiveSizePolicyInitializingSteps= 20{product}uintx AdaptiveSizePolicyOutputInterval= 0{product}uintx AdaptiveSizePolicyWeight= 10{product}uintx AdaptiveSizeThroughPutPolicy= 0{product}uintx AdaptiveTimeWeight= 25{product}bool AdjustConcurrency= false{product}bool AggressiveOpts= false{product}intx AliasLevel= 3{C2 product}bool AlignVector= true{C2 product}intx AllocateInstancePrefetchLines= 1{product}intx AllocatePrefetchDistance= 256{product}intx AllocatePrefetchInstr= 0{product}…………………………略…………………………………………bool UseXmmI2D= false{ARCH product}bool UseXmmI2F= false{ARCH product}bool UseXmmLoadAndClearUpper= true{ARCH product}bool UseXmmRegToRegMoveAll= true{ARCH product}bool VMThreadHintNoPreempt= false{product}intx VMThreadPriority= -1{product}intx VMThreadStackSize= 1024{pd product}intx ValueMapInitialSize= 11{C1 product}intx ValueMapMaxLoopSize= 8{C1 product}intx ValueSearchLimit= 1000{C2 product}bool VerifyMergedCPBytecodes= true{product}bool VerifySharedSpaces= false{product}intx WorkAroundNPTLTimedWaitHang= 1{product}uintx YoungGenerationSizeIncrement= 20{product}uintx YoungGenerationSizeSupplement= 80{product}uintx YoungGenerationSizeSupplementDecay= 8{product}uintx YoungPLABSize= 4096{product}bool ZeroTLAB= false{product}intx hashCode= 5{product}java version "1.8.0_141"Java(TM) SE Runtime Environment (build 1.8.0_141-b15)Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)