博客
关于我
【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/

你可能感兴趣的文章
npm,yarn,cnpm 的区别
查看>>
NPOI
查看>>
NPOI之Excel——合并单元格、设置样式、输入公式
查看>>
NPOI初级教程
查看>>
NPOI利用多任务模式分批写入多个Excel
查看>>
NPOI在Excel中插入图片
查看>>
NPOI将某个程序段耗时插入Excel
查看>>
NPOI格式设置
查看>>
NPOI设置单元格格式
查看>>
Npp删除选中行的Macro录制方式
查看>>
NR,NF,FNR
查看>>
nrf24l01+arduino
查看>>
nrf开发笔记一开发软件
查看>>
nrm —— 快速切换 NPM 源 (附带测速功能)
查看>>
nrm报错 [ERR_INVALID_ARG_TYPE]
查看>>
NS3 IP首部校验和
查看>>
NSDateFormatter的替代方法
查看>>
NSError 的使用方法
查看>>
NSGA-Ⅲ源代码
查看>>
nsis 安装脚本示例(转)
查看>>