JAVA jvm 调优经历简单记录
2021/12/25 9:08:21
本文主要是介绍JAVA jvm 调优经历简单记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
现象
jdk1.8下 java进程启动
内存会随着运行 并发不断缓慢增加, 但不会释放下来。
第一阶段,认为有些对象没有造成内存溢出,开始各种分析。
之间使用一些工具命令,常用记录下来
一顿操作猛如虎,结果发现还是没有太大问题,顶多jetty 一些对象生命周期较长WebSocketSession MappedByteBufferPool
阿里软件工具 arthas java -jar arthas-boot.jar https://arthas.aliyun.com/doc java jmap -histo pid>histoxxx.txt 输出文本pid所有对象内存打下 jmap -heap pid jmap -dump:format=b,file=dump.hprof <pid> jstat -gcutil pid 总结垃圾回收统计 pmap -x 13367 | sort -n -k3 开启jvm port=$1 port2=$((10#${port}-1000)) -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=$port2 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=x.x.x.x
第二阶段 开始调优jvm,目标能够及时回收一些内存
设置一些 最大 最小 内存后 发现内存可以回收了,但是每次都是一段时间后通过FGC 来回收的,瞬间尴尬了。
开始更高端的jvm设置,.....
蓦然回首...
jdk8默认使用 并行收集器组合 Parallel Scavenge + Parallel Old
为什么不用G1呢
https://blog.csdn.net/coderlius/article/details/79272773可以看些回收机制概念
第三阶段,使用G1
G1回收器的常见操作步骤
G1的设计原则就是简化JVM性能调优,开发人员只需要简单的三步即可完成调优:
第一步: 开启G1垃圾收集器
第二步: 设置堆的最大内存
第三步: 设置最大的停顿时间
G1中提供了三种垃圾回收模式: YoungGC、Mixed GC和Full GC,在不同的条件下被触发。
一段时间观察 jstat -gcutil xx
FGC没有,内存也能下来了。 总结,一些第三方工具使用后,某些对象生命周期不定,
大并发下gc不一定能下来,新 旧区设置调优需要达到平衡。使用G1更智能简洁。
这篇关于JAVA jvm 调优经历简单记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?