初识JVM参数

导读:本篇文章讲解 初识JVM参数,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

JVM参数总共分为三种类型,标准参数、非标准参数以及其他参数。接下来,我们对其依次分析。

1. 标准参数

标准参数就是不会由于JDK版本变化为变化的参数。

-version

-help

-server

-cp

image-20220102183542944

2. 非标准参数

非标准参数,也就是在JDK各个版本中可能会变动。

非标准参数中我们又将其分为-X参数以及-XX参数。

2.1 -X参数

-Xint 解释执行

-Xcomp 第一次使用就编译成本地代码

-Xmixed 混合模式,JVM自己来决定

image-20220102183832727

2.2 -XX参数

该参数是使用得最多的参数类型。

他属于非标准化参数,相对不稳定,主要用于JVM调优和Debug。

该参数也分为两种参数:分别是Boolean类型以及非Boolean类型。

  • Boolean类型

    格式:-XX:[±] +或-表示启用或者禁用name属性

    比如:

    -XX:+UseConcMarkSweepGC 表示启用CMS类型的垃圾回收器

    -XX:+UseG1GC 表示启用G1类型的垃圾回收器

  • 非Boolean类型

    格式:-XX= 表示name属性的值是value

    比如:-XX:MaxGCPauseMillis=500

3. 其他参数

实际上这块也相当于是-XX类型的参数,我们可以手动设置一些内存大小,包括堆、栈等。

-Xms1000M等价于-XX:InitialHeapSize=1000M

-Xmx1000M等价于-XX:MaxHeapSize=1000M

-Xss100等价于-XX:ThreadStackSize=100

4. 查看参数

通过 > flags.txt 将参数结果输出到某个文件中,方便我们查看。

java -XX:+PrintFlagsFinal -version > flags.txt

image-20220102193414479

image-20220102193454535

值得注意的是”=“表示默认值,”:=”表示被用户或JVM修改后的值

一般要设置参数,可以先查看一下当前参数是什么,然后进行修改

5. 设置参数的常见方式

  • 开发工具中设置比如IDEA,eclipse

  • 运行jar包的时候:java -XX:+UseG1GC xxx.jar

  • web容器比如tomcat,可以在脚本中的进行设置

  • 通过jinfo实时调整某个java进程的参数(参数只有被标记为manageable的flflags可以被实时修改)

6. 常用参数含义

参数 含义 说明
-XX:CICompilerCount=3 最大并行编译数 如果设置大于1,虽然编译速度会提高,但是同样影响系统稳定性,会增加JVM崩溃的可能
-XX:InitialHeapSize=100M 初始化堆大小 简写-Xms100M
-XX:MaxHeapSize=100M 最大堆大小 简写-Xms100M
-XX:NewSize=20M 设置年轻代的大小
-XX:MaxNewSize=50M 年轻代最大大小
-XX:OldSize=50M 设置老年代大小
-XX:MetaspaceSize=50M 设置方法区大小
-XX:MaxMetaspaceSize=50M 方法区最大大小
-XX:+UseParallelGC 使用UseParallelGC 新生代,吞吐量优先
-XX:+UseParallelOldGC 使用UseParallelOldGC 老年代,吞吐量优先
-XX:+UseConcMarkSweepGC 使用CMS 老年代,停顿时间优先
-XX:+UseG1GC 使用G1GC 新生代,老年代,停顿时间优先
-XX:NewRatio 新老生代的比值 比如-XX:Ratio=4,则表示新生代:老年代=1:4,也就是新生代占整个堆内存的1/5
-XX:SurvivorRatio 两个S区和Eden区的比值 比如-XX:SurvivorRatio=8,也就是(S0+S1):Eden=2:8,也就是一个S占整个新生代的1/10
-XX:+HeapDumpOnOutOfMemoryError 启动堆内存溢出打印 当JVM堆内存发生溢出时,也就是OOM,自动生成dump文件
-XX:HeapDumpPath=heap.hprof 指定堆内存溢出打印目录 表示在当前目录生成一个heap.hprof文件
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:g1-gc.log 打印出GC日志 可以使用不同的垃圾收集器,对比查看GC情况
-Xss128k 设置每个线程的堆栈大小 经验值是3000-5000最佳
-XX:MaxTenuringThreshold=6 提升年老代的最大临界值 默认值为 15
-XX:InitiatingHeapOccupancyPercent 启动并发GC周期时堆内存使用占比 G1之类的垃圾收集器用它来触发并发GC周期,基于整个堆的使用率,而不只是某一代内存的使用比. 值为 0 则表示”一直执行GC循环”. 默认值为 45.
-XX:G1HeapWastePercent 允许的浪费堆空间的占比 默认是10%,如果并发标记可回收的空间小于10%,则不会触发MixedGC。
-XX:MaxGCPauseMillis=200ms G1最大停顿时间 暂停时间不能太小,太小的话就会导致出现G1跟不上垃圾产生的速度。最终退化成FullGC。所以对这个参数的调优是一个持续的过程,逐步调整到最佳状态。
-XX:ConcGCThreads=n 并发垃圾收集器使用的线程数量 默认值随JVM运行的平台不同而不同
-XX:G1MixedGCLiveThresholdPercent=65 混合垃圾回收周期中要包括的旧区域设置占用率阈值 默认占用率为 65%
-XX:G1MixedGCCountTarget=8 设置标记周期完成后,对存活数据上限为G1MixedGCLIveThresholdPercent的旧区域执行混合垃圾回收的目标次数 默认8次混合垃圾回收,混合回收的目标是要控制在此目标次数以内
-XX:G1OldCSetRegionThresholdPercent=1 描述Mixed GC时,Old Region被加入到CSet中 默认情况下,G1只把10%的Old Region加入到CSet中

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/16742.html

(0)
小半的头像小半
0 0

相关推荐

  • 21天学习挑战赛之Java方法 Java

    21天学习挑战赛之Java方法

    0 0148
    seven_的头像 seven_
    2023年3月1日
  • 阿里云 IP 地理位置库(淘宝IP库)实践(前篇) 后端开发

    阿里云 IP 地理位置库(淘宝IP库)实践(前篇)

    0 0147
    小半的头像 小半
    2022年8月14日
  • 前后端分离CRUD以及跨域问题 后端开发

    前后端分离CRUD以及跨域问题

    0 0137
    小半的头像 小半
    2023年1月1日
  • 路由器的配置 后端开发

    路由器的配置

    0 092
    飞熊的头像 飞熊
    2023年7月5日
  • spaCy,一个牛逼的python库 Python

    spaCy,一个牛逼的python库

    0 062
    葫芦侠五楼的头像 葫芦侠五楼
    2024年4月19日
  • 服务器上传下载文件 后端开发

    服务器上传下载文件

    0 0102
    小半的头像 小半
    2022年5月25日
  • Python项目——项目优化(Elasticsearch)(一) Python

    Python项目——项目优化(Elasticsearch)(一)

    0 0201
    飞熊的头像 飞熊
    2023年3月5日
  • 为 ASPNETCORE 7 项目添加 Serilog .NET

    为 ASPNETCORE 7 项目添加 Serilog

    0 0110
    newbe的头像 newbe
    2023年1月3日
  • SpringBoot入门到精通-SpringBoot启动流程(七) 后端开发

    SpringBoot入门到精通-SpringBoot启动流程(七)

    0 0102
    飞熊的头像 飞熊
    2023年7月13日
  • C#基于Scottplot进行数据可视化 .NET

    C#基于Scottplot进行数据可视化

    0 0151
    小半的头像 小半
    2024年3月7日
  • 如何用两台服务器实现数据库的主从同步与分离 后端开发

    如何用两台服务器实现数据库的主从同步与分离

    0 095
    小半的头像 小半
    2022年5月29日
  • ElasticSearch的使用 后端开发

    ElasticSearch的使用

    0 0116
    小半的头像 小半
    2022年5月21日

站长精选

  • 为什么 MySQL 最好不要只用 limit 做分页查询?

    为什么 MySQL 最好不要只用 limit 做分页查询?

    2023年12月17日

  • SpringBoot的魔法:构建高效Java应用的十个秘诀~~

    SpringBoot的魔法:构建高效Java应用的十个秘诀~~

    2023年10月5日

  • ELK 处理 SpringBoot 日志,真是太妙了!

    ELK 处理 SpringBoot 日志,真是太妙了!

    2023年9月23日

  • 月增千万的数据,我用单体+单库扛下了所有

    月增千万的数据,我用单体+单库扛下了所有

    2023年9月27日

  • 基于 Vue3.0 的中后台前端解决方案(已开源,拿来即用)

    基于 Vue3.0 的中后台前端解决方案(已开源,拿来即用)

    2022年11月21日

  • Arrays.asList() 隐藏的陷阱,你避开了吗?

    Arrays.asList() 隐藏的陷阱,你避开了吗?

    2023年7月20日

  • 谁说MySQL单表行数不要超过2000W?

    谁说MySQL单表行数不要超过2000W?

    2024年3月15日

  • 全网显示IP归属地,准确率99.9%,这个开源的 API 离线库强大到离谱!

    全网显示IP归属地,准确率99.9%,这个开源的 API 离线库强大到离谱!

    2024年3月12日

  • SpringBoot 下如何实现 Redis + Caffeine 二级分布式高性能缓存

    SpringBoot 下如何实现 Redis + Caffeine 二级分布式高性能缓存

    2023年7月12日

  • ChatGPT 不算新技术革命,带不来什么新机会

    ChatGPT 不算新技术革命,带不来什么新机会

    2023年4月17日

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!

深圳SEO优化公司龙岗设计公司网站坂田网站优化排名横岗设计网站木棉湾关键词按天扣费惠州网站优化软件松岗企业网站建设惠州企业网站改版吉祥seo网站优化沙井网站建设坪山网站优化排名塘坑百度竞价福田营销网站双龙营销型网站建设罗湖SEO按天扣费永湖模板网站建设坂田模板网站建设民治百姓网标王松岗英文网站建设南联网站改版爱联网站定制福永SEO按天扣费坂田百度竞价木棉湾英文网站建设同乐网站建设罗湖百度竞价福永seo排名大浪SEO按效果付费坪山网站优化推广大芬seo优化龙岗网站优化歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化