当前位置: 首页 > news >正文

JVM学习-JVM运行时参数

JVM参数选项
标准参数选项
  • 特点

    • 稳定,后续版本不会变化
    • 以【-】开头
  • 各种选项

    • 运行java或者java -help可以看到所有的标准选项
      在这里插入图片描述
  • 补充内容

    • -server:64位机器上只支持Server模式的JVM,适用于需要大内存的应用程序,默认用并行垃圾回收器
    • -client:在32位Windows系统上,默认使用Client类型的JVM,要想使用Server模式,则机器配置至少有2个以上的CPU和2G以上的物理内存。Client模式适用于对内存要求较小的桌面应用程序,默认使用Serial串行垃圾回收器
-X参数选项
  • 特点

    • 非标准化参数
    • 功能相对稳定,官方说后续可能会变更
    • 以-X开头
  • 各种选项

    • 运行java -X命令可以查看所有的X选项
      在这里插入图片描述
  • JVM的JIT编译模式相关的选项

    • -Xint:禁用JIT,所有字节码都被解释执行,这个模式的速度最慢
    • -Xcomp:所有字节码第一次使用就都被编译成本地代码,然后再执行
    • -Xmixed:混合模式,默认模式,让JIT根据程序的运行情况,有选择地将某些代码
  • 特别

    • -Xms:设置初始Java堆大小,等价于-XX:InitialHeapSize
    • -Xmx:设置最大堆大小,等价于-XX:MaxHeapSize
    • -Xss:设置Java线程堆栈大小,等价于-XX:ThreadStackSize
-XX参数选项
  • 特点
    • 非标准化参数
    • 使用最多的类型
    • 这类选项属于实验性,不稳定
    • 以-XX开头
  • 作用
    • 用于开发和调试JVM
  • 分类
    • Boolean类型
      • -XX:+表示启用option属性
      • -XX:-表示禁用option属性
      • 举例(-XX:+UseParallelGC启用并行收集器,-XX:+UseG1GC启用G1收集器,-XX:+UseAdaptiveSizePolicy自动选择年轻代区大小和相应的Survivor区比例)
      • 有些指令默认是开启的,可以使用-关闭
    • 非Boolean类型(key-value类型)
      • 子类型1:数值型格式-XX:=
      • 子类型2:非数值型格式-XX:=
      • 举例(-XX:NewSize=1024m设置新生代初始大小为1024M,-XX:MaxGCPauseMillis=500 设置GC停顿时间:500毫秒,-XX:GCTimeRatio=19设置吞吐量,-XX:NewRatio=2设置新生代和老年代比例,-XX:HeapDumpPath=/usr/local/heapdump.hprof指定heap转储文件存储位置)
  • 特别
    • -XX:PrintFlagsFinal
      • 输出所有参数的名称和默认值
      • 默认不包括Dignostic和Experimental参数
      • 可以配合-XX:+UnlockDiagnosticVMOptions和-XX:UnlockExperimentalVMOptions使用
添加JVM参数
Eclipse

在这里插入图片描述
在这里插入图片描述

IDEA

在这里插入图片描述
在这里插入图片描述

运行jar包
  • java -Xms500m -Xmx500m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar demo.jar
通过Tomcat运行war包
  • linux系统下,找到tomcat/bin/catalina.sh中添加JAVA_OPTS=“-Xms500m -Xmx500m”
  • windows系统下,找到catalina.bat不添加set “JAVA_OPTS=-Xms500m -Xmx500m”
程序运行过程中
  • 使用jinfo -flag=设置非boolean类型参数
  • 使用jinfo -flag[+|-]设置boolean类型参数
  • 可以修改的参数见
常用的JVM参数
打印设置的XX选项及值
  • -XX:+PrintCommandLineFlags:让程序运行前打印出用户手动设置或者JVM自动设置的XX选项
  • -XX:+PrintFlagsInitial:打印出所有XX选项的默认值
  • -XX:+PrintFlagsFinal:打印出XX选项在运行程序时生效的值
  • -XX:+PrintVMOptions:打印JVM参数
堆、栈、方法区等内存大小设置
    • -Xss128k:每个线程的栈大小为128k
  • 堆内存
    • -Xms1024m:等价于-XX:InitialHeapSize,设置JVM初始堆内存为1024m
    • -Xmx1024m:等价于-XX:MaxHeapSize,设置JVM最大堆内存为1024m
    • -Xmn1g:设置年轻代大小为1G,官方建议设置整个堆大小的3/8
    • -XX:NewSize=1024m:设置年轻代初始值为1024m
    • -XX:MaxNewSize=1024m:设置年轻代最大值为1024m
    • -XX:SurivivorRatio=8:设置年轻代中Eden与一个Survivor区的比值,默认8
    • -XX:UseAdaptiveSizePolicy:自动选择各区大小比例
    • -XX:NewRatio=4:设置老年代与年轻代比值
    • -XX:PretenureSizeThreadshold=1024:设置让大于此阈值的对象直接分配在老年代,单位为字节,只对Serial和parNew收集器有效
    • -XX:MaxTenuringThrehold=15:
  • 方法区
    • 永久代
      • -XX:PermSize=256m:设置永久代初始值为256m
      • -XX:MaxPermSize=256m:设置永久代最大值为256m
    • 元空间
      • -XX:MetaspaceSize:初始空间大小
      • -XX:MaxMetaspaceSize:最大空间大小,默认没有限制
      • -XX:UseCompressedOops:压缩对象指针
      • -XX:UseCompressedClassPointers:压缩类指针
      • -XX:UseCompressedSpaceSize:设置Klass Metadata的大小,默认1G
  • 直接内存
    • -XX:MaxDirectMemorySize
OutOfMemory相关选项
垃圾收集器相关选项
  • Serial回收器
  • ParNew回收器
  • Parallel回收器
  • CMS回收器
  • G1回收器
GC日志相关选项
其他参数
通过Java代码获取JVM参数

持续更新中… …

相关文章:

  • 24.6.2(动态开点线段树)
  • 股票数据集1-纳斯达克NASDAQ 100简介
  • 【java11】java11新特性之嵌套类
  • 打造无障碍网络体验:Edge 浏览器代理服务器设置指南
  • 【Unity实战篇 】 | Unity实现UGUI颜色渐变,支持透明渐变
  • 星舰第四次发射:历史性的一步
  • 入坑必看的几个嵌入式方向热点问题
  • Memory测试工具-stressapptest详解
  • 国内科技企业和机构发力AI研发,50余篇论文入选顶会ICML2024
  • 计数排序(排序终篇)
  • 人工智能在肿瘤预后预测中的最新研究进展|顶刊精析·24-06-07
  • 单节点离线部署TiDB 6.1用于测试
  • 使用AppJail配置网络并创建tiny jail(未成功)
  • 自己实现一个Feign
  • 政府绩效考核第三方评估的含义
  • 深入了解以太坊
  • php的引用
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Docker 笔记(2):Dockerfile
  • docker容器内的网络抓包
  • ES6语法详解(一)
  • Java|序列化异常StreamCorruptedException的解决方法
  • javascript 总结(常用工具类的封装)
  • Javascript编码规范
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • MaxCompute访问TableStore(OTS) 数据
  • Python - 闭包Closure
  • Redis学习笔记 - pipline(流水线、管道)
  • sessionStorage和localStorage
  • spring学习第二天
  • SpriteKit 技巧之添加背景图片
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 闭包--闭包之tab栏切换(四)
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 学习Vue.js的五个小例子
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • #QT(串口助手-界面)
  • #数据结构 笔记一
  • (3)选择元素——(17)练习(Exercises)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (六)DockerCompose安装与配置
  • (四) Graphivz 颜色选择
  • (算法)前K大的和
  • (转载)Google Chrome调试JS
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET MVC之AOP
  • .net 中viewstate的原理和使用
  • .netcore 获取appsettings
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • :=