JVM参数:带你认识-X和-XX参数
摘要:JVM参数分为三类:标准参数、非标准参数(-X参数)和高级选项(-XX参数)。本文主要为大家讲解-X参数和-XX参数。
本文分享自华为云社区《JVM运行参数之-X和-XX参数》,作者:共饮一杯无 。
JVM参数分为三类:标准参数、非标准参数(-X参数)和高级选项(-XX参数)。本文主要为大家讲解-X参数和-XX参数。
-X参数
JVM的-X参数是非标准参数,在不同版本的jvm中,参数可能会有所不同,可以通过java -X查看非标准参数。
C:\Users\zjq>java -X -Xmixed 混合模式执行 (默认) -Xint 仅解释模式执行 -Xbootclasspath:<用 ; 分隔的目录和 zip/jar 文件> 设置搜索路径以引导类和资源 -Xbootclasspath/a:<用 ; 分隔的目录和 zip/jar 文件> 附加在引导类路径末尾 -Xbootclasspath/p:<用 ; 分隔的目录和 zip/jar 文件> 置于引导类路径之前 -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 显示所有与区域设置相关的设置并继续 -X 选项是非标准选项, 如有更改, 恕不另行通知。
运行模式-Xint、-Xcomp、-Xmixed
- 在解释模式(interpreted mode)下,-Xint标记会强制JVM执行所有的字节码,当然这会降低运行速度,通常低10倍或更多。
- -Xcomp参数与它(-Xint)正好相反,JVM在第一次使用时会把所有的字节码编译成本地代码,从而带来最大程度的优化。
- 然而,很多应用在使用-Xcomp也会有一些性能损失,当然这比使用-Xint损失的少,原因是-xcomp没有让JVM启用JIT编译器的全部功能。JIT编译器可以对是否需要编译做判断,如果所有代码都进行编译的话,对于一些只执行一次的代码就没有意义了。
- -Xmixed是混合模式,将解释模式与编译模式进行混合使用,由jvm自己决定,这是jvm默认的模式,也是推荐使用的模式。
示例:强制设置运行模式
#强制设置为解释模式 E:\jvm>java -showversion -Xint TestJVM java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, interpreted mode) zjqzjq #强制设置为编译模式 E:\jvm>java -showversion -Xcomp TestJVM java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, compiled mode) zjqzjq #默认的混合模式 E:\jvm>java -showversion TestJVM java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) zjqzjq
-XX参数
-XX参数也是非标准参数,主要用于JVM的调优和debug操作。
-XX参数的使用有2种方式,一种是boolean类型,一种是非boolean类型:
- boolean类型
格式:-XX:[±]
如:-XX:+DisableExplicitGC 表示禁用手动调用gc操作,也就是说调用System.gc()无效
- 非boolean类型
格式:-XX:
如:-XX:NewRatio=2 表示新生代和老年代的比值,表示新生代占1,老年代占2。则新生代占整个堆的1/3。
用法:
E:\jvm>java -showversion -XX:+DisableExplicitGC TestJVM java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) zjqzjq
-Xms与-Xmx参数(设置jvm的堆内存的初始大小和最大大小)
-Xms与-Xmx分别是设置jvm的堆内存的初始大小和最大大小。
-Xmx2048m:等价于-XX:MaxHeapSize,设置JVM最大堆内存为2048M。
-Xms512m:等价于-XX:InitialHeapSize,设置JVM初始堆内存为512M。 适当的调整jvm的内存大小,可以充分利用服务器资源,让程序跑的更快。示例:
E:\jvm>java -Xms512m -Xmx2048m TestJVM zjqzjq

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
一文详解TensorFlow模型迁移及模型训练实操步骤
摘要:本文介绍将TensorFlow网络模型迁移到昇腾AI平台,并执行训练的全流程。然后以TensorFlow 1.15训练脚本为例,详细介绍了自动迁移、手工迁移以及模型训练的操作步骤。 本文分享自华为云社区《将TensorFlow模型快速迁移到昇腾平台》,作者:昇腾CANN。 当前业界很多训练脚本是基于TensorFlow的Python API进行开发的,默认运行在CPU/GPU/TPU上,为了使这些脚本能够利用昇腾AI处理器的强大算力执行训练,需要对TensorFlow的训练脚本进行迁移。 首先,我们了解下模型迁移的全流程: 通过上图可以看出,模型迁移包括“脚本迁移 –> 模型训练 –> 精度调优 –> 性能调优 –> 模型固化”几个流程,其中: “脚本迁移”是将TensorFlow训练脚本经过少量修改,可以运行在昇腾AI处理器上。 “模型训练”是根据模型参数进行多轮次的训练迭代,并在训练过程中评估模型准确度,达到一定阈值后停止训练,并保存训练好的模型。 “精度调优”与“性能调优”是在用户对精度或性能有要求时需要执行的操作。 “模型固化”是将训练好的、精度性...
- 下一篇
MASA Stack 1.0 发布会讲稿——趋势篇
世界技术圈在发生什么? 云原生的演进 这里跟大家一起回顾一下张磊老师在云原生开发者日上关于“云原生技术演进”的分享。 有很多人会问,是不是云原生就等于K8s这些开源项目?其实今天出现的这些开源项目如K8s、docker、istio、dapr,是一些概念与方法论的一种技术实现,他们的背后就是云原生的理论体系,比如不可变的基础设施,高自动化、自愈自运维,语言和架构无关,高可扩展等等,而我们现在在实践的微服务、容器化、sidecar等就是为了支撑这些概念和方法论的技术和架构实现。这里有一条逻辑链路,就是当有一套概念和方法论之后,就会出现对应的技术和架构,我们在开源社区里就会出现相应的开源实现。 举个例子,容器化的技术架构对应的开源实现就有Docker、K8s这样的开源项目。用户端体现的这些开源项目,他其实实践的就是一套技术架构,而在这套技术架构背后的理论思想就是我们说的概念和方法论。整个云原生生态的体现就是这么一套方法论加架构加开源技术的这么一个集合,他的目的就是希望让云计算技术很好的去服务我们的开发者,目标就是帮助开发者降本增效,而云的一些特质就可以帮助我们去实现这一目标,比如云是无限弹性...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19