热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JVM运行时参数详解

篇首语:本文由编程笔记#小编为大家整理,主要介绍了JVM运行时参数详解相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了JVM运行时参数详解相关的知识,希望对你有一定的参考价值。








JVM运行时参数


    • 1.参数选项类型
    • 2.常用参数选项
    • 3.添加参数选项




1.参数选项类型


  • -开头的参数选项



    也叫作标准参数选项,这些参数比较稳定,基本不会随着JDK版本的改变而变化


    可以使用java -help指令在CMD命令行查看都有哪些参数选项:

  • -X开头的参数选项



    也叫作非标准参数选项,这些参数相对也比较稳定,但是可能会随着JDK版本的改变而变化


    可以使用java -X指令在CMD命令行查看都有哪些参数选项:

  • -XX开头的参数选项



    也叫作非标准参数选项,这些参数比较不稳定,但是使用最多,用于开发和调试JVM


    # 启用某个选项(-XX:+UseG1GC)
    -XX:&#43;<option>
    # 禁用某个选项(-XX:-UseG1GC)
    -XX:-<option>
    # 设置数值型(-XX:NewRatio&#61;2)
    -XX:<option>&#61;<number>
    # 设置非数值型(-XX:HeapDumpPath&#61;/usr/local/xxx)
    -XX:<option>&#61;<string>


2.常用参数选项


  • 打印相关


    • -XX:&#43;PrintCommandLineFlags 打印由用户设置或者JVM自动设置的参数选项
    • -XX:&#43;PrintFlagsInitial 打印所有参数选项的默认值
    • -XX:&#43;PrintFlagsFinal 打印所有参数选项的生效值
    • -XX:&#43;PrintVMOptions 打印JVM参数
  • 堆相关


    • -Xms100m 设置JVM初始堆内存的大小
    • -Xmx100m 设置JVM最大堆内存的大小
    • -XX:InitialHeapSize&#61;100m 设置JVM初始堆内存的大小
    • -XX:MaxHeapSize&#61;100m 设置JVM最大堆内存的大小
    • -Xmn1g 设置年轻代的内存大小&#xff0c;推荐调整为整个堆大小的3/8
    • -XX:NewSize&#61;1g 设置年轻代初始的内存大小
    • -XX:MaxNewSize&#61;1g 设置年轻代最大的内存大小
    • -XX:SurvivorRatio&#61;8 设置年轻代中Eden区和Survivor区的比例
    • -XX:NewRatio&#61;4 设置年轻代与老年代的比例
    • -XX:&#43;UseAdaptiveSizePolicy 是否开启自动分配内存大小比例
    • -XX:PretenureSizeThreadshold&#61;1024 设置大于指定字节大小的对象直接分配在老年代
    • -XX:MaxTenuringThreshold&#61;15 设置在Survivor区存活对象的年龄最大值
    • -XX:&#43;OrintTenuringDistribution 在进行MinorGC后&#xff0c;打印当前Survivor区中各个对象的年龄
    • -XX:TargetSurvivorRatio&#61;5 设置在进行MinorGC后&#xff0c;Survivor区占用空间的期望大小
  • 栈相关


    • -Xss128k 设置每个线程的栈大小
    • -XX:ThreadStackSize&#61;128k 设置每个线程的栈大小
  • 方法区相关


    • -XX:PermSize&#61;256m 设置永久代初始大小
    • -XX:MaxPermSize&#61;256m 设置永久代最大大小
    • -XX:MetaspaceSize&#61;256m 设置元空间初始大小
    • -XX:MaxMetaspaceSize&#61;256m 设置元空间的最大大小
    • -XX:&#43;UseCompressedOops 是否启用压缩对象指针
    • -XX:&#43;UseCompressedClassPointers 是否启用压缩类指针
    • -XX:CompressedClassSpaceSize&#61;1g 设置压缩元空间的大小
    • -XX:MaxDirectMemorySize 设置直接内存的大小&#xff0c;默认和Java的堆空间大小一样
  • 内存溢出相关


    • -XX:&#43;HeapDumpOnOutOfMemoryError 当出现内存溢出时&#xff0c;生成一次堆存储文件
    • -XX:&#43;HeapDumpBeforeFullGC 在出现FullGC之前&#xff0c;生成一次堆转储文件
    • -XX:HeapDumpPath 设置堆转储文件的保存路径
    • -XX:OnOutOfMemoryError 指定一个可执行程序路径&#xff0c;当出现内存溢出时执行它。
  • 垃圾收集器相关


    • -XX:MaxGCPauseMillis 设置垃圾收集器的最大停顿时间

    • -XX:GCTimeRatio 设置垃圾收集器收集的时间占总时间的比例

    • -XX:ParallelGCThreads&#61;n 设置年轻代中并行垃圾收集器执行时的线程数量

    • -XX:&#43;UseSerialGC 指定年轻代和老年代都使用Serial串行垃圾收集器

    • -XX:&#43;UseParNewGC 指定年轻代使用ParNew并行垃圾收集器

    • -XX:&#43;UseParallelGC 指定年轻代使用Parallel并行垃圾收集器

    • -XX:&#43;UseParallelOldGC 指定老年代使用Parallel Old并行垃圾收集器

    • -XX:&#43;UseConcMarkSweepGC 指定老年代使用CMS垃圾搜集器&#xff0c;然后年轻代启用ParNew

    • -XX:CMSInitiatingOccupanyFraction 设置CMS垃圾收集器中堆内存使用率的阈值&#xff0c;如果超出&#xff0c;则进行回收

    • -XX:&#43;UseCMSCompactAtFullCollection 设置CMS垃圾收集器当进行FullGC之后&#xff0c;对内存空间进行压缩整理

    • -XX:CMSFullGCsBeforeCompaction 设置CMS垃圾收集器在执行多少次FullGC后&#xff0c;对内存空间进行压缩整理

    • -XX:ParallelCMSThreads 设置CMS垃圾收集器收集时的线程数量

    • -XX:&#43;UseG1GC 指定年轻代和老年代都使用G1垃圾收集器

    • -XX:G1HeapRegionSize 设置G1垃圾收集器中每个Region的大小&#xff0c;默认是堆内存大小的1/2000

    • -XX:ParallelGCThread 设置G1垃圾收集器在进行STW时GC线程的数量

    • -XX:ConcGCThreads 设置G1垃圾收集器并发标记的线程数

    • -XX:InitiatingHeapOccupanyPercent 设置触发G1垃圾收集器进行GC的堆空间占用率

    • -XX:G1NewSizePercent 设置G1垃圾收集器中年轻代占用整个堆内存的最小百分比

    • -XX:G1MaxNewSizePercent 设置G1垃圾收集器中年轻代占用整个堆内存的最大百分比

    • -XX:G1ReservePercent 设置G1垃圾收集器中保留的内存区域个数

  • 垃圾收集日志相关


    • -verbose:gc 输出简化的GC日志信息&#xff0c;可以独立使用
    • -XX:&#43;PrintGC 输出简化的GC日志信息&#xff0c;可以独立使用
    • -XX:&#43;PrintGCDetails 输出详细的GC日志信息&#xff0c;可以独立使用
    • -XX:&#43;PrintGCTimeStamps 输出GC发生的时间&#xff0c;需要配合前面三种指令中的一种
    • -XX:&#43;PrintGCDateStamps 输出GC发生的日期&#xff0c;需要配合前面三种指令中的一种
    • -XX:&#43;PrintHeapAtGC 在每一次进行GC之前和之后&#xff0c;都输出GC日志信息
    • -Xloggc:filepath 将GC日志信息输出到指定文件
    • -XX:&#43;TraceClassLoading 监控类的加载
    • -XX:&#43;PrintGCApplicationStoppedTime 输出GC时线程的停顿时间
    • -XX:&#43;PrintGCApplicationConcurrentTime 输出垃圾收集之前应用未中断的执行时间
    • -XX:&#43;PrintReferenceGC 输出回收了多少种不同引用类型的引用
    • -XX:&#43;PrintTenuringDistribution 输出每次MinorGC后&#xff0c;当前的Survivor区中对象的年龄分布
    • -XX:&#43;UseGCLogFileRotation 是否启用GC日志文件的自动转储
    • -XX:NumberOfGCLogFiles&#61;1 设置GC日志文件的循环数目
    • -XX:GCLogFileSize&#61;1m 设置GC日志文件的最大存储大小
  • 其它


    • -XX:&#43;DisabledExplicitGC 是否禁止HotSpot虚拟机执行System.gc方法
    • -XX:ReservedCodeCacheSize&#61;n 设置代码缓存的大小
    • -XX:&#43;UseCodeCacheFlushing 是否启用代码缓存刷新
    • -XX:&#43;DoEscapeAnalysis 是否启用逃逸分析
    • -XX:&#43;UseBiasedLocking 是否启用偏向锁
    • -XX:&#43;UseLargePages 是否启用大页面
    • -XX:&#43;UseTLAB 是否启用TLAB
    • -XX:&#43;PrintTLAB 输出TLAB的使用情况
    • -XX:TLABSize 设置TLAB的大小

3.添加参数选项


  • 在Eclipse中

  • 在IDEA中

  • 在命令行中

    java -jar xxx.jar -Xms100m -Xmx100m

  • 在Tomcat中

    # 在Linux系统中&#xff0c;找到tomcat/bin/catalina.sh文件并添加如下内容
    JAVA_OPTS&#61;"-Xms100m -Xmx100m"
    # 在Windows系统中&#xff0c;找到tomcat/bin/catalina.bat文件并添加如下内容
    set "JAVA_OPTS&#61;-Xms100m -Xmx100m"

  • 在程序运行中

    # 设置Boolean类型参数选项
    jinfo -flag <&#43;|-><option> <pid>
    # 设置非Boolean类型参数选项
    jinfo -flag <option>&#61;<value> <pid>

    不过只允许修改其中某些参数选项&#xff1a;







推荐阅读
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
author-avatar
刘刚michaelup_340
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有