论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
备份容灾
›
备份
›
Java应用服务器JVM配置与优化全面指南
Java应用服务器JVM配置与优化全面指南
渣渣兔
论坛元老
|
2024-12-17 19:08:21
|
显示全部楼层
|
阅读模式
楼主
主题
1579
|
帖子
1579
|
积分
4737
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
Java应用服务器JVM配置与优化全面指南
1. JVM底子知识
Java虚拟机(JVM)是Java平台的核心,负责执行Java字节码。明白JVM的根本组成和工作原理是进行有效优化的底子。
1.1 JVM主要组件
类加载器
:负责加载、链接和初始化类文件。
运行时数据区
:
堆(Heap):存储对象实例和数组。
方法区(Method Area):存储类信息、常量、静态变量等。
程序计数器(Program Counter Register):当火线程所执行字节码的行号指示器。
本地方法栈(Native Method Stack):为本地方法服务。
虚拟机栈(VM Stack):存储局部变量表、操纵数栈等。
执行引擎
:表明执行字节码或将其编译为本地机器码(JIT编译)。
本地方法接口
:与本地代码库交互。
垃圾网络器
:主动管理内存,接纳不再使用的对象。
1.2 JVM内存模型
相识JVM内存模型对于优化至关紧张:
年轻代
(Young Generation):
Eden空间
Survivor空间(From和To)
老年代
(Old Generation)
元空间
(Metaspace,Java 8及以后版本)
2. JVM参数分类
JVM参数主要分为三类:
标准参数
(-):相对稳固,向后兼容。
比方:-verbose:gc
非标准参数
(-X):不包管全部JVM实现都支持。
比方:-Xmx2g
高级参数
(-XX):各JVM实现可能不同,将来可能会变动。
比方:-XX:+UseG1GC
3. 关键JVM配置参数
以下是一些关键的JVM配置参数:
-Xms: 初始堆大小
-Xmx: 最大堆大小
-Xmn: 新生代大小
-XX:MetaspaceSize: 元空间初始大小
-XX:MaxMetaspaceSize: 元空间最大大小
-XX:+UseG1GC: 使用G1垃圾网络器
-XX
arallelGCThreads: 并行GC线程数
-XX:ConcGCThreads: 并发GC线程数
-XX:InitiatingHeapOccupancyPercent: 触发并发GC的堆占用率阈值
-XX:MaxGCPauseMillis: 最大GC停顿时间目的
4. JVM优化建议
4.1 堆内存设置
建议
:
将初始堆(-Xms)和最大堆(-Xmx)设置为相同值
通常设置为可用物理内存的50%-70%
涉及参数
:
-Xms
-Xmx
原理及来由
:
设置相同的初始和最大堆大小可以避免JVM在运行时动态调整堆大小,减少性能颠簸。将堆大小设置为物理内存的肯定比例可以充分使用系统资源,同时为操纵系统和其他进程留下足够空间。
4.2 垃圾网络器选择
建议
:
对于大内存应用,保举使用G1网络器
涉及参数
:
-XX:+UseG1GC
原理及来由
:
G1网络器计划用于大内存多核系统,它将堆划分为多个区域,可以并行、并发地进行垃圾网络。G1提供了更好的可猜测性和更短的停顿时间,特别得当必要低延迟的大型应用。
4.3 GC优化
建议
:
设置合理的MaxGCPauseMillis值
调整ParallelGCThreads和ConcGCThreads
涉及参数
:
-XX:MaxGCPauseMillis
-XX
arallelGCThreads
-XX:ConcGCThreads
原理及来由
:
MaxGCPauseMillis设置目的最大GC停顿时间,G1会尽量控制GC停顿时间不超过这个值。ParallelGCThreads控制并行GC线程数,通常设置为CPU核心数。ConcGCThreads控制并发GC线程数,通常设置为ParallelGCThreads的1/4。合理设置这些参数可以在吞吐量和延迟之间取得平衡。
4.4 内存优化
建议
:
启用压缩指针
使用字符串去重
涉及参数
:
-XX:+UseCompressedOops
-XX:+UseStringDeduplication
原理及来由
:
压缩指针可以在64位JVM中使用32位指针,减少内存使用。字符串去重可以识别并归并重复的字符串,进一步节省内存。这些优化对于内存密集型应用特别有效。
4.5 新生代设置
建议
:
合理设置新生代大小,通常为堆大小的1/3到1/2
涉及参数
:
-Xmn
-XX:NewRatio
原理及来由
:
新生代大小影响Minor GC的频率和时间。较大的新生代可以容纳更多短期对象,减少对象晋升到老年代的频率,但会增长Minor GC的时间。必要根据应用特性进行平衡。
4.6 元空间设置
建议
:
合理设置元空间初始大小和最大大小
涉及参数
:
-XX:MetaspaceSize
-XX:MaxMetaspaceSize
原理及来由
:
元空间用于存储类元数据。合理设置可以减少元空间GC频率,避免频繁的Full GC。初始大小设置过小可能导致启动时频繁GC,最大大小设置过小可能导致OutOfMemoryError。
4.7 直接内存设置
建议
:
根据必要设置直接内存大小
涉及参数
:
-XX:MaxDirectMemorySize
原理及来由
:
直接内存用于NIO操纵,合理设置可以进步I/O密集型应用的性能。但设置过大可能导致物理内存不敷。
4.8 JIT编译器优化
建议
:
调整JIT编译阈值和编译线程数
涉及参数
:
-XX:CompileThreshold
-XX:CICompilerCount
原理及来由
:
JIT编译可以明显进步热门代码的执行效率。降低编译阈值可以使方法更快地被编译,增长编译线程数可以加快编译速度,但会增长CPU和内存使用。
4.9 启用大页内存
建议
:
在支持的系统上启用大页内存
涉及参数
:
-XX:+UseLargePages
原理及来由
:
大页内存可以减少TLB(转换后备缓冲区)缺失,进步内存访问效率。特别得当大堆应用。
4.10 GC日志设置
建议
:
启用具体的GC日志
涉及参数
:
-Xloggc:/path/to/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
原理及来由
:
具体的GC日志对于分析和优化GC性能至关紧张。它可以资助识别GC问题,如频繁的Full GC或长时间的GC暂停。
5. JVM调优最佳实践
设定性能目的
:明确关注延迟、吞吐量或内存占用。
基准测试
:在调整前后进行性能测试,确保优化效果。
逐步调整
:每次只改变一个参数,观察其影响。
连续监控
:使用工具如JConsole、VisualVM或专业APM工具连续监控JVM性能。
分析GC日志
:定期分析GC日志,识别潜伏问题。
思量应用特性
:根据应用是CPU密集型、I/O密集型还是内存密集型来调整参数。
关注系统整体
:JVM优化应思量整个系统的性能,包括数据库、网络等因素。
定期回顾
:随着应用变革和JVM版本更新,定期重新评估JVM配置。
测试环境验证
:在将更改应用到生产环境之前,务必在测试环境中充分验证。
文档化
:记载全部的调整和其效果,为将来的优化提供参考。
6. 结论
JVM调优是一个复杂且连续的过程,必要深入明白JVM工作原理、应用特性以及系统资源环境。通过合理配置和优化JVM参数,可以明显提拔Java应用的性能和稳固性。然而,没有一种通用的配置得当全部应用,优化计谋必要根据具体环境不断调整和验证。连续监控、分析和优化是确保Java应用长期高效运行的关键。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
渣渣兔
论坛元老
这个人很懒什么都没写!
楼主热帖
事务的ACID特性
SqlServer2012升级到SqlServer2016
深度干货!一篇Paper带您读懂HTAP | St ...
DCM: 中间件家族迎来新成员
iOS事件传递链与响应链
(内附源码)Node.js小试——使用Node ...
arthas使用介绍
.NET for Apache Spark 入门演练
go-zero单体服务使用泛型简化注册Handl ...
SaaS软件工程师成长路径
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
分布式数据库
MES
图数据库
运维.售后
Mysql
快速回复
返回顶部
返回列表