博客
关于我
【JVM系列】7、JVM调优
阅读量:488 次
发布时间:2019-03-07

本文共 1865 字,大约阅读时间需要 6 分钟。

JVM performans Optimization Guide

JVM的optimization是一个复杂但重要的任务,涉及堆设置、垃圾回收器选择以及性能监控等多个方面。本文将详细探讨JVM性能优化的关键点,帮助开发者和运维人员在搭建高性能Java应用时做出明智的决策。

1. Heap Setting

JVM的堆设置对于系统性能有着直接影响。堆的大小由三个因素决定:操作系统的数据模型(32位或64位)、系统的可用虚拟内存和物理内存。此外,"ksh"对于不同的应用场景有不同的最佳实践。

在Windows Server 2003环境下,物理内存为3.5 GB,搭配JDK5.0,最大堆大小可以设置为1478 MB。经典建议是将堆设置为3550 MB,以确保有足够的内存空间供应用运行。

2. Garbage Collector Selection

在JVM中,垃圾回收器的选择直接影响系统性能。JVM提供了三种垃圾回收器:串行收集器、并行收集器和并发收集器。基于不同的工作负载,选择合适的收集器类型可以显著提升性能。

a. 通过并行收集器优化吞吐量
  • 典型配置:
    • java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20
    • java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20
    • java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100
b. 通过并发收集器优化响应时间
  • 推荐配置:
    • java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=20
    • java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection

3. Monitoring and Tuning

a. 调用GC日志
  • -XX:+PrintGC:输出GC事件的详细信息。
  • -XX:+PrintGCDetails:打印每次GC的具体数据。
  • -XX:+PrintGCTimeStamps:记录GC事件发生的时间戳。
  • -XX:+PrintGCApplicationConcurrentTime:测量应用在GC期间未中断运行的时间。
  • -XX:+PrintGCApplicationStoppedTime:测量应用在GC期间暂停的总时间。
  • -XX:PrintHeapAtGC:在GC前后打印堆的状态信息。
  • -Xloggc:filename:将GC日志输出到文件,方便后续分析。
b. 开启压缩选项
  • -XX:+UseCMSCompactAtFullCollection:在Full GC时开启对年老代的压缩。
  • -XX:CMSFullGCsBeforeCompaction=0:确保每次Full GC后对内存空间进行压缩。

4. Common Tuning Recommendations

a. Heap Size Selection
  • 响应时间优先的应用:尽可能设大,直到接近最低响应时间限制,减少年轻代和年老代的回收频率。
  • 吞吐量优先的应用:设大,适合8核及以上多核系统,确保并行收集器运行高效。
b. 年老代和年轻代的平衡
  • 响应时间优先的应用:年老代应设置较小,确保并发收集器的效率,避免内存碎片问题。
  • 吞吐量优先的应用:年老代较小,适合大多数短期对象存活于年轻代。
c. 应对内存碎片问题
  • 如何解决内存碎片问题:
  • 开启压缩选项:-XX:+UseCMSCompactAtFullCollection
  • 调整GC频率:-XX:CMSFullGCsBeforeCompaction=5

5. Final Thoughts

JVM的性能优化是一个不断探索和实验的过程。通过合理设置堆大小、选择适合的垃圾回收器,并实时监控GC行为,开发者可以显著提升应用性能。在实践中,建议结合实际应用场景进行调整,并通过GC日志分析来优化配置。

转载地址:http://dngdz.baihongyu.com/

你可能感兴趣的文章
Python制作进度条,原来有这么多方法
查看>>
Python制作简单的学生成绩管理系统
查看>>
python制作甘特图的基本知识(附Demo)
查看>>
python制作一个简单的服务器,【Python】 做一个简单的 http 服务器
查看>>
Python到底能做什么?它的优点在哪?
查看>>
python利用pytorch库导出图像分割算子
查看>>
python利用pyshark监听网卡来抓包其中pyshark中摸索的一些可用参数
查看>>
python利用excel分析过杀漏失
查看>>
python判断汉字数目
查看>>
python判断文件是空的,如果是空的,就删除
查看>>
python判断密码是否正确_python密码判断是否符合要求的方法
查看>>
python判断字符串包含中文_Python 判断字符串是否包含中文
查看>>
python删除第一行_Python 乱码指北:一行删掉根目录
查看>>
Python删除列表元素的三种方法
查看>>
python初步学习-python数据类型-集合(set)
查看>>
python列表生成字典_Python中将字典转换为列表的方法
查看>>
python列表对应元素合并为列表及判断一个列表是几维
查看>>
python+flask计算机毕业设计骨科门诊患者档案管理系统(程序+开题+论文)
查看>>
python+flask计算机毕业设计高校体测管理系统的设计与实现(程序+开题+论文)
查看>>
python+flask计算机毕业设计高校体育赛事系统(程序+开题+论文)
查看>>