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

java中对jvm参数的调整进行调优

一 对jvm的调优

1.1  设置并行垃圾回收器

#年轻代、老年代均使用并行收集器,初始堆内存64M,最大堆内存512M
JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms64m -Xmx512m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

1.2 分析gc日志文件

将gc.log文件上传到gceasy.io查看gc中是否存在问题。

问题1:在5次GC时,系统所消耗的时间大于用户时间,这反应出的服务器的性能存在瓶颈,调度CPU等资源所消耗的时间要长一些。

 问题2:可以看出,吞吐量表现不错,但是gc时,线程的暂停时间稍有点长 。

 问题3:

  • 年轻代的gc有74次,次数稍有多,说明年轻代设置的大小不合适需要调整

  • FullGC有8次,说明堆内存的大小不合适,需要调整

 问题4:年轻代大小设置不合理,导致了多次GC。

 1.3  调整年轻代大小

JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms128m -Xmx1024m -XX:NewSize=64m -XX:MaxNewSize=256m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

将初始堆大小设置为128m,最大为1024m,初始年轻代大小64m,年轻代最大256m

查看效果:可以看到GC次数要明显减少,说明调整是有效的。

 1.4 设置G1收集器

#设置了最大停顿时间100毫秒,初始堆内存128m,最大堆内存1024m
JAVA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xms128m -Xmx1024m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

效果:可以看到,吞吐量有所提升,评价响应时间也有所缩短。

 

相关文章:

  • MySQL并发事务访问相同记录
  • 利用UART串口实现数据的收发
  • 虚幻引擎5 C++游戏开发教程
  • 【GNN报告】GNN可解释性 基于几何与拓扑特性的图学习
  • Hadoop3 - HDFS 介绍及 Shell Cli 操作
  • Java~数据结构(三)~栈和队列(Stack\Queue\Deque的常用方法和模拟实现一个栈和队列等)
  • 股票API下单接口是怎样传入交易数据的?
  • 【C++初阶】C++入门篇(二)
  • 点云LAS格式分析
  • 关于我的家乡html网页设计完整版,10个以家乡为主题的网页设计与实现
  • 有营养的算法笔记(二)
  • 10.5 - 每日一题 - 408
  • 递归、分治算法刷题笔记
  • 微服务架构秘籍:SpringCloud+SpringCloud Alibaba,全网疯传
  • HDLbits exercises 10(LATCHES AND FLIP-FLOPS后半部分题)
  • ----------
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【Linux系统编程】快速查找errno错误码信息
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • 5、React组件事件详解
  • Angularjs之国际化
  • happypack两次报错的问题
  • JS题目及答案整理
  • Laravel5.4 Queues队列学习
  • Meteor的表单提交:Form
  • Netty源码解析1-Buffer
  • React-flux杂记
  • REST架构的思考
  • spring学习第二天
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 区块链共识机制优缺点对比都是什么
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 为什么要用IPython/Jupyter?
  • 我建了一个叫Hello World的项目
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • ​HTTP与HTTPS:网络通信的安全卫士
  • # include “ “ 和 # include < >两者的区别
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #define、const、typedef的差别
  • #NOIP 2014#Day.2 T3 解方程
  • #在 README.md 中生成项目目录结构
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (附源码)ssm码农论坛 毕业设计 231126
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)EOS中账户、钱包和密钥的关系
  • *** 2003
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • @RequestBody与@ModelAttribute
  • @SuppressWarnings注解
  • @TableId注解详细介绍 mybaits 实体类主键注解